[Bug tree-optimization/114793] wrong code at -O1 with "-fschedule-insns2 -fselective-scheduling2" on x86_64-linux-gnu (the generated code hangs)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114793 H.J. Lu changed: What|Removed |Added CC||jh at suse dot cz Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed||2024-04-21 Version|unknown |14.0 --- Comment #2 from H.J. Lu --- (In reply to Zhendong Su from comment #0) > It seems to be a recent regression as it does not reproduce with 13.2 and > earlier. > > Compiler Explorer: https://godbolt.org/z/b3cc1MqP9 > > [538] % 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) > [539] % > [539] % gcctk -O0 small.c > [540] % ./a.out > [541] % > [541] % gcctk -O1 -fschedule-insns2 -fselective-scheduling2 small.c > [542] % timeout -s 9 10 ./a.out > Killed > [543] % > [543] % cat small.c > int printf(const char *, ...); > volatile int a; > int b, c, d = 1, e, f; > int main() { > int g = 1; > for (; b; b -= d) > g = e; > for (; c < 2; c++) { > if (g) { > if (!d) > printf("%d", f); > continue; > } > a; > } > return 0; > } This is caused by r14-2712.
[Bug tree-optimization/114793] wrong code at -O1 with "-fschedule-insns2 -fselective-scheduling2" on x86_64-linux-gnu (the generated code hangs)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114793 --- Comment #1 from Zhendong Su --- The following reproducer is different, but perhaps is the same or related. Compiler Explorer: https://godbolt.org/z/411rzMP1n [588] % 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) [589] % [589] % gcctk -O1 -fno-tree-forwprop -fselective-scheduling2 -fschedule-insns2 -fsel-sched-pipelining small.c [590] % ./a.out Aborted [591] % [591] % cat small.c int printf(const char *, ...); int a, d, g, h; volatile int b = 1; static unsigned c = 1; char e, f = 1, i; static int j() { int k, l = g, m = 1 << l, n = -e, o = -1 % ((f && 1) ^ i), p = ~n - o; if (m) { int q, s, t, r = 1 % (((1 % f) & (~e | c)) ^ b); q = f; s = i; t = e; f = -b; k = f; d = -1; u: e = 0 & b; if (i > f) if (!b) goto v; if (d > t) __builtin_abort(); if (b < 1 || !d || !c) { printf("%d\n", i); f = ((i | b) & (k - r)) << (e << ~t ^ q) << s; goto u; } if (i) f = q; v: i = n & o & l; printf("%ld\n", (long)t); } i = p; return h; } int main() { for (; a < 3; a++) j(); return 0; }