https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100647
Bug ID: 100647 Summary: ICE during sms pass Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: kito at gcc dot gnu.org Target Milestone: --- Host: x86_64-linux-gnu Target: riscv64-unknown-elf Flags: -Ofast -fno-gcse -fmodulo-sched -freorder-blocks-and-partition -fno-tree-dce -march=rv64gc -mabi=lp64 Testcase: char c; char *d; char *e(); char *f(char *h) { int a = *h; return *h == 7 ? h : h + a; } char i() { char *g, *b; g = e(); for (; g; b = f(b)) if (c) *d = 0; return 0; } ICE Message: during RTL pass: sms sms.crash.c: In function 'i': sms.crash.c:15:1: internal compiler error: in cfg_layout_redirect_edge_and_branch_force, at cfgrtl.c:4651 15 | } | ^ 0x82a8a8 cfg_layout_redirect_edge_and_branch_force ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfgrtl.c:4651 0x8102d3 redirect_edge_and_branch_force(edge_def*, basic_block_def*) ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfghooks.c:490 0x810de5 make_forwarder_block(basic_block_def*, bool (*)(edge_def*), void (*)(basic_block_def*)) ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfghooks.c:903 0x81a88d merge_latch_edges ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfgloop.c:780 0x81a88d disambiguate_multiple_latches ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfgloop.c:831 0x81a88d disambiguate_loops_with_multiple_latches() ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/cfgloop.c:844 0xb35484 apply_loop_flags ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/loop-init.c:55 0xb3605c loop_optimizer_init(unsigned int) ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/loop-init.c:124 0x15b8039 sms_schedule ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/modulo-sched.c:1362 0x15bac1f execute ../../../../riscv-gnu-toolchain-trunk/riscv-gcc/gcc/modulo-sched.c:3359 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. ICE version: Trunk, 11, 10 Note: Work with GCC 9