https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114792
Bug ID: 114792 Summary: ICE on valid code at -O1 with "-fno-tree-ccp -fno-tree-copy-prop" on x86_64-linux-gnu: in get_loop_body, at cfgloop.cc:903 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zhendong.su at inf dot ethz.ch Target Milestone: --- It appears to be a recent regression and does not reproduce with 13.2. Compiler Explorer: https://godbolt.org/z/zzdjrb599 [522] % gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/14.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --disable-bootstrap --enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers --enable-languages=c,c++ --disable-werror --enable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 14.0.1 20240421 (experimental) (GCC) [523] % [523] % gcctk -O1 -fno-tree-ccp -fno-tree-copy-prop small.c during GIMPLE pass: ch small.c: In function ‘main’: small.c:2:5: internal compiler error: in get_loop_body, at cfgloop.cc:903 2 | int main() { | ^~~~ 0x7926fd get_loop_body(loop const*) ../../gcc-trunk/gcc/cfgloop.cc:903 0xbfbce9 unloop(loop*, bool*, bitmap_head*) ../../gcc-trunk/gcc/cfgloopmanip.cc:1014 0x12ee996 unloop_loops(vec<loop*, va_heap, vl_ptr>&, vec<int, va_heap, vl_ptr>&, vec<edge_def*, va_heap, vl_ptr>&, bitmap_head*, bool*) ../../gcc-trunk/gcc/tree-ssa-loop-ivcanon.cc:688 0x12dfc84 copy_headers ../../gcc-trunk/gcc/tree-ssa-loop-ch.cc:1158 0x12e02da execute ../../gcc-trunk/gcc/tree-ssa-loop-ch.cc:1179 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. [524] % [524] % cat small.c int a; int main() { int b = -1, c; for (; b >= 0; b++) { for (c = 0; c; c++) { L: while (a) if (a) goto L; } } return 0; }