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

            Bug ID: 121558
           Summary: wrong code at -O3 on x86_64-linux-gnu (generated code
                    hangs)
           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: ---

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

Note:
- fails: 12.* and later
- works: 11.* and earlier
- -fno-tree-slsr makes it disappear
- might be related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121557

[537] % 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/16.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 --enable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 16.0.0 20250814 (experimental) (GCC) 
[538] % 
[538] % gcctk -O2 small.c; ./a.out
[539] % gcctk -O3 small.c
[540] % timeout -s 9 5 ./a.out
Killed
[541] % cat small.c
int a, b, d, e, f;
int c[] = {
    0, 4, 5,          5,          5,        4,          4049,
    8, 6, -205950648, 4,          50548861, 3,          107580753,
    9, 0, 2,          2,          6,        5,          5,
    6, 2, 2,          1006888145, 607687,   101629,     9000684,
    6, 4, 104598,     3,          1,        2097651377, -1461312586};
int m(int n) {
  int j, l, g, h = 0;
  unsigned i = 4294967295;
  b = n + 999;
  d = b - 1 - a;
  if (b < d)
    a = -a;
  b = -1000 - a + 1000 * d;
  e = -1000 - a - 999 * d;
  int k[] = {d, a, e, n, f, b};
  for (; h < 6; ++h) {
    g = i ^ c[(i ^ k[h]) & 55];
    l = g >> 8 ^ (g & 55);
    i = l;
  }
  j = i = i ^ 4294967295;
  return j;
}
int main() {
  while (m(-2147460) > 0)
    ;
}
  • [Bug tree-optimization/121558]... zhendong.su at inf dot ethz.ch via Gcc-bugs

Reply via email to