[Bug tree-optimization/114793] wrong code at -O1 with "-fschedule-insns2 -fselective-scheduling2" on x86_64-linux-gnu (the generated code hangs)

2024-04-21 Thread hjl.tools at gmail dot com via Gcc-bugs
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)

2024-04-21 Thread zhendong.su at inf dot ethz.ch via Gcc-bugs
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;
}