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;
}

Reply via email to