https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110176

            Bug ID: 110176
           Summary: wrong code at -Os and above on x86_64-linux-gnu
           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 seems to affect GCC 10.4 and later.

Compiler Explorer: https://godbolt.org/z/aKfvfxa63


[504] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.0/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
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 14.0.0 20230607 (experimental) (GCC) 
[505] % 
[505] % gcctk -O1 small.c; ./a.out
[506] % 
[506] % gcctk -O2 small.c
[507] % timeout -s 9 5 ./a.out
Killed
[508] % 
[508] % cat small.c
int a, b;
void c() {}
int d() {
  unsigned f[1];
  int i;
  if (a)
    goto h;
  f[0] = -1;
  while (1) {
    c();
    for (; a < 1; a++) {
      if (0) {
      j:
        continue;
      }
      i = f[0];
      if (a)
        break;
      b = i >= (b == 0);
    }
    if (!b) {
      if (0) {
      h:
        goto j;
      }
      return 0;
    }
  }
}
int main() {
  d();
  return 0;
}

Reply via email to