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; }