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

            Bug ID: 121522
           Summary: wrong code at -O3 on x86_64-linux-gnu (the 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/K7csr9qM7

Note:
- fails: 14.* and later
- works: 13.* and earlier
- -fno-tree-slsr makes it disappear

[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 20250812 (experimental) (GCC) 
[538] % 
[538] % gcctk -O2 small.c
[539] % ./a.out
[540] % 
[540] % gcctk -O3 small.c
[541] % timeout -s 9 5 ./a.out
Killed
[542] % cat small.c
int a[] = {
    0,          1996959894, 3993919788, 4,          7,          5,
    3915621685, 2657392035, 4,          2044508324, 0,          2547177864,
    5,          1,          7,          4049,       498536548,  6,
    4089016648, 4,          50548861,   3,          107580753,  2211677639,
    0,          2,          2,          2321926636, 7,          5,
    4195302755, 7,          997073096,  6,          2,          2,
    1006888145, 607687,     3524101629, 2768942443, 901097722,  9000684,
    6,          8065728,    853044451,  1172266101, 705015759,  2882616665,
    651767980,  6,          4,          3218104598, 3,          1,
    3485111705, 3099436303, 671266974,  4,          30930,      70347812,
    795835527,  5,          3244367275, 3060149565, 1994146192, 31158534,
    2,          4023717930, 1907459465, 5,          3,          3904427059,
    2013776290, 6,          4,          0,          3,          141376813,
    9,          3865271297, 802195444,  6,          8001368,    4066508878,
    70925,      3092731,    5,          4111451223, 706088902,  314042704,
    2,          2,          1658658271, 7,          3,          4224994405,
    303535960,  6,          7007092,    9037538,    70817,      1,
    3,          3554079995, 1131014506, 6,          2909243462, 6,
    7,          7,          2852801631, 708648649,  8,          6,
    6048,       3373015174, 909,        5,          3110523913, 3462522015,
    4,          702138776,  2966460450, 3352799412, 504918807,  783551873,
    3082640443, 3233442989, 3988292384, 6,          62317068,   10842,
    5,          1,          70997,      1943803523, 3814918930, 2489596804,
    0,          2053790376, 3826175755, 2466906013, 167816743,  2097651377,
    4027552580, 90386,      2,          2050814,    5,          2154129355,
    426522225,  507879,     4275313526, 0,          6,          2,
    708143,     2394877945, 397917763,  1622183637, 604390888,  2714866558,
    953729732,  1340076626, 3518719985, 60999,      1068828381, 1219638859,
    3624741850, 8,          906185462,  1090812512, 3747672003, 2825379669,
    5,          1181335161, 4,          3160834842, 628085408,  6,
    109,        8078467,    3,          400815,     3317316542, 608,
    4,          6,          1,          5,          752459403,  1,
    607071920,  3965973030, 1969922972, 40735498,   2617837225, 3943577151,
    3087877,    908371,     2512341634, 803740692,  2075208622, 2,
    3,          3855990285, 2094854071, 198958881,  2029012,    4057260610,
    2,          0,          1,          4139329115, 1,          414664567,
    2282248934, 4279200368, 1711684554, 6,          405801727,  5,
    1634467795, 1,          5067896,    3608007406, 1308918612, 8,
    2808555105, 3,          1,          1047427035, 8,          703836,
    1088359270, 0,          2847714899, 9,          1202900863, 7,
    3183342108, 0,          2,          0,          3134207493, 3453421203,
    9,          601450431,  3009837614, 6,          6,          4,
    3020668471, 3272380065, 1510334235, 755167117};
int d(int e, char h) { return (e >> 8 & 16777215) ^ a[(e ^ h) & 255]; }
int i(int e, int h[]) {
  int f, b = 4294967295, g = 0;
  for (; g < e; ++g) {
    int c;
    f = (b >> 8 & 16777215) ^ a[(b ^ h[g]) & 255];
    c = f;
    c = d(c, h[g] >> 8);
    c = d(c, h[g] >> 6);
    c = d(c, h[g] >> 24);
    b = c;
  }
  b = (unsigned)(b ^ 4294967295) % 2147483647;
  return b;
}
int j(int e, int h, int k, int l, int m, int n, int p, int q, int u) {
  int r, s, t = -1 + k - -1;
  if (!p)
    k = 0;
  s = 1 - (-1 + p - 1);
  r = -1 - k - 1 / m + 1;
  int v[] = {e, t, h, s, k, l, m, n, r, p, q, u};
  return i(12, v);
}
int main() {
  int e = -5, h = -805306364, k = 2147483647, l = 8, m = -536870911, n =
-1342177282;
  int o = 0, r;
v:
  r = -1 + h + 1 / l - 1;
  if (j(-3, 30, -4, -4, -4, -4, -4, 32, -4) - 445113689 - r +
          (j(-2, 23, -3, -3, -3, -3, -3, 22, -3) - 1062535215) * k +
          (j(-1, 1, -2, -2, -2, -2, -2, 1, -2) - 950633090) * n +
          j(-1, 1, -2, -2, -2, -2, -2, 1, -2) - 950633090 - e - 1 ==
      0)
    goto w;
  do {
    l = o;
    goto v;
  y:
    o = -r;
  } while (j(-3, 30, -4, -4, -4, -4, -4, 32, -4) + o == 0);
w:
  r = -1 - m - -r - -1;
  if ((j(-2, 23, -3, -3, -3, -3, -3, 22, -3) - 1062535222) * r + o > 0)
    goto y;
  return 0;
}

Reply via email to