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

--- Comment #1 from Zhendong Su <zhendong.su at inf dot ethz.ch> ---
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;
}

Reply via email to