https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127036
--- Comment #1 from Zhendong Su <zhendong.su at inf dot ethz.ch> --- Another reproducer likely for the same issue: Compiler Explorer: https://godbolt.org/z/oKozzKPf9 Note: - fails: 12.1 to trunk - works: 11.5 and earlier [778] % 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/17.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++,lto --disable-werror --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 17.0.0 20260823 (experimental) [master r17-1628-gd1c12591336] (GCC) [779] % [779] % gcctk -O2 -fno-vect-cost-model small.c [780] % ./a.out Aborted [781] % cat small.c int d[256]; float e, aa = 3.75f, ad, ae, p, af; int q = -2147483648, z, ag, ah, ai, ao, ap, at, av = -2102679826, ay, az, ba, bf, bl, bx, bz, ca = -81, cb, ce, ck, cm, co, cp = -247570656, cs, ct, cx, cy, cz, da, df, di, dm, or, uu_y22_34, prt0_0, prv5, prr, py25_11, urt1_0, urv4, urr, uy32_13, uy33_8, uy33_9, ur__ao34, ur__ao36, ur__ao35; double r, s, bb, bd, bg, bh, cd, ot1_0_0, urv0; short t, u = -95, v, ak = -31, al, am, au, bc, bk, bp, by, cf, cn = -27154, cu, db, ot0_2_0, ot1_1 = -2636, prt0_1, urv3, ur_pld_0; long w, bm, bn, bq, br, bs, bt, bu = -4, cl = -20, cv, dc, ov0 = -5846427903590135296, uu_z0_1, uu_z0_0, ov2, ov3, oa0_1_1 = -1, oa0_0_1 = -35, prv2 = -61, urt0_1_2 = -202, urt0_1_1 = -733838346623117492, urt0_1_0 = -11, uy33_5; int *x, *y, *ar, *dh, *prp1, *urp1; char an, bo, cg, ch, ci, cj = -127, dd, de = 1, dj, dk, dl, x_r_pld_0, x_r_pld_1, prv0, prv1, prv3, pr_pld_0, urt0_0 = -37, urv2, ura0_2_2 = -17, ura0_2_1 = -122, ura0_1_2 = -68, ura0_1_1 = -42, ura0_0_2 = -37, ura0_0_0 = -77; short *aq, *bv, *cr, *urp0; short **as, **bw, **urpp1; double *be; float *cq; char *dg, *dn, *x_rp1; char *prp0; int **prpp0; char **prpp1; int a(int p1, int p2) { for (int f = 0; f < 256; ++f) { unsigned c = f; for (int g = 0; g < 8; ++g) c = c & 1 ? c >> 1 ^ 3988292384 : c >> 1; d[f] = c; } unsigned h = p1; int i = p2; for (int b = 0; b < 4; ++b) { char ab = i; i >>= 8; h = h >> 8 ^ d[(h ^ ab) & 255]; } return h; } void j(int p1, int p2) { if (p1 != p2) __builtin_abort(); } int k(char, long, int, char, short); int l(char, short); int m(int, char, long, long, long, short); int n(char, int, long, long); int o(char, char, short, short, float); int ac(int p1, short p2, float p3, float p4, short p5, float p6) { aj: x = y = &q; s = -1 + (double)q; q = *x + 2147483647; if (p5 < (30 << p1) - q) goto aj; q = p1; *x = ~q; t = -p2 + 32768; w = -10 + (0 <= 0 ? -69576436035974 : 104542398066085) - -8; v = 32767 - 13 * p5; r = -1 - 8.0; e = -1 + p2; z = a(0, e); z = a(z, q); z = a(z, 0); z = a(z, r); z = a(z, s); z = a(z, 0); z = a(z, 0); z = a(z, p2); z = a(z, (long)((unsigned long)t << 48) >> 48); z = a(z, 191); z = a(z, v); z = a(z, (long)((unsigned long)u << 48) >> 48); z = a(z, w); z = a(z, p1); z = a(z, p2); z = a(z, p3); z = a(z, p4); z = a(z, p5); z = a(z, p6); z = a(z, *x); z = a(z, *y); return z; } int aw(long p1, char p2, long p3, int p4, char p5) { int ax = -95; do { ar = &ax; *ar = 5980065 - ax; ah = 776863745; as = &aq; am = 32768 + ax; ax = 3555328 - (*ar - 4325376); } while (ax < 3801093); ag = -ah; *as = &al; ah = -2 * ag; ax = 7870959 - 6799361 - ag; *aq = 32706 + am; ag = -ah - (2147483644 ^ ah) - -15728647; an = 127 + 115 * p5 - 112; ai = a(0, (long)((unsigned long)32768 << 48) >> 48); ai = a(ai, (long)((unsigned long)ak << 48) >> 48); ai = a(ai, 105); ai = a(ai, 206); ai = a(ai, al); ai = a(ai, (unsigned long)ax << 40 >> 40); ai = a(ai, (long)((unsigned long)am << 48) >> 48); ai = a(ai, (long)((unsigned long)an << 56) >> 56); ai = a(ai, ag); ai = a(ai, ah); ai = a(ai, p1); ai = a(ai, p2); ai = a(ai, p3); ai = a(ai, p4); ai = a(ai, p5); au = *aq; ai = a(ai, au); ao = *ar; ai = a(ai, (unsigned long)ao << 40 >> 40); return ai; } int bi(short p1, long p2, long p3, float p4, int p5) { at = -183; int bj = -19; be = &bb; while (1) { bb = 4 - 8.0 * bd; if ((-905832327 ^ bj) + 628121 > (-973465480 ^ bj)) { bd = -0.25 * bb - 3.75 * bb; *be = -3.0 + p5; bc = -108 + 1; break; } bd = 0.375 + bj; bj = -33582328; ap = 7 * bj; } ay = a(0, av); ay = a(ay, 0); ay = a(ay, 2147483647); ay = a(ay, at); ay = a(ay, 0); ay = a(ay, 143); ay = a(ay, 186); ay = a(ay, ap); ay = a(ay, 1); ay = a(ay, 1.0f); ay = a(ay, bb); ay = a(ay, 32767); ay = a(ay, 15141); ay = a(ay, (long)((unsigned long)bc << 52) >> 52); ay = a(ay, bd); ay = a(ay, bj); ay = a(ay, (long)((unsigned long)p1 << 48) >> 48); ay = a(ay, p2); ay = a(ay, 0); ay = a(ay, p3); ay = a(ay, p4); ay = a(ay, p5); bg = *be; ay = a(ay, bg); bh = *be; ay = a(ay, bh); return ay; } int cc(long p1, short p2) { bt = -188; bs = -144; br = -2383733065564603422; bq = -83; bw = &bv; az = -536870912; bk = p2 - -242; *bw = &bp; bn = 1985573282 + ((long)((unsigned long)bk << 48) >> 48); bm = -1610612736 - az; bo = -127; bk = 32767 + p2; bp = bk + 32767; ba = a(0, bk); ba = a(ba, 0); ba = a(ba, bn); ba = a(ba, bm); ba = a(ba, (long)((unsigned long)bo << 56) >> 56); ba = a(ba, bp); ba = a(ba, bu); ba = a(ba, bt); ba = a(ba, -1107569988); ba = a(ba, bs); ba = a(ba, br); ba = a(ba, bq); ba = a(ba, 226); ba = a(ba, 17); ba = a(ba, 0); ba = a(ba, p1); ba = a(ba, (long)((unsigned long)p2 << 48) >> 48) ^ 510675761; bf = ba & 510675761; bl = ~bf; bx = ba | 510675761; ba = bx & bl; ba = a(ba, 0); ba = a(ba, 0); by = *bv; ba = a(ba, by); ba = a(ba, bp); return ba; } int cw(double p1, char p2, short p3, long p4, char p5) { ci = -54; ch = -127; cq = &aa; cr = &cf; cf = 2047 + ca; ca = 524287 - cf; cb = -1074788417 + 1074790381 - cf; cg = p2 - p5; bz = cb - 1048578 * cb; cv = aa; cb = k(42 - 44, cv - 4, -125, -1, 32703) - 1821740843; cd = -74416864 + cb; *cq = 7 + 3.75f * aa; ad = cb - 2129921; ce = a(0, cd); ce = a(ce, bz); ce = a(ce, cf); ce = a(ce, (long)((unsigned long)cj << 56) >> 56); ce = a(ce, 127); ce = a(ce, cg); ce = a(ce, (long)((unsigned long)ci << 56) >> 56); ce = a(ce, 42); ce = a(ce, 46); ce = a(ce, 122); ce = a(ce, (long)((unsigned long)ch << 56) >> 56); ce = a(ce, ca); ce = a(ce, cl); ce = a(ce, aa); ce = a(ce, 164); ce = a(ce, ad); ce = a(ce, (long)((unsigned long)cn << 48) >> 48); ce = a(ce, cb); ce = a(ce, p1); ce = a(ce, (long)((unsigned long)p2 << 56) >> 56); ce = a(ce, 0); ce = a(ce, p3); ce = a(ce, p4); ce = a(ce, (long)((unsigned long)p5 << 56) >> 56); ce = a(ce, 0); ae = *cq; ce = a(ce, ae); cu = *cr; ce = a(ce, cu); return ce; } int k(char p1, long p2, int p3, char p4, short p5) { co = -1741569516; cm = -51; dg = &de; dh = &cs; ck = 13 - 1048577 + 2147483647 % 163; while (1) { de = 127 + de; db = -1 - 32767 + p5; dd = p1 - 126 + 127; dc = p2 - -63; if (0 < de) break; *dg = dd - 1; } cs = l(dd - 16, 88) - 26465060; ct = a(0, 54); ct = a(ct, cp); ct = a(ct, co); ct = a(ct, cm); ct = a(ct, ck); ct = a(ct, (long)((unsigned long)db << 48) >> 48); ct = a(ct, dc); ct = a(ct, dd); ct = a(ct, de); ct = a(ct, cs); ct = a(ct, (long)((unsigned long)p1 << 56) >> 56); ct = a(ct, p2); ct = a(ct, (long)((unsigned long)p3 << 44) >> 44); ct = a(ct, p4); ct = a(ct, p5); dj = *dg; ct = a(ct, dj); ct = a(ct, *dh); return ct; } int l(char p1, short p2) { dn = x_rp1 = &dk; dl = -111 - ~p1; rb1: df = cc(4294967295, -32768) + 1251988188; cx = n(111, 851, -2403051615, 7243264503) + df; *dn = p1 - 12 * dk; if (0 >= dk) goto rb1; da = ai + 1157601396; cz = m(5455620, 40, -5846427904153485374, 4611704165368840282, 1, 18368) + da; cy = cz; cy = a(cy, dk); cy = a(cy, 0); cy = a(cy, (long)((unsigned long)dl << 56) >> 56); cy = a(cy, cx); cy = a(cy, 0); cy = a(cy, 0); cy = a(cy, 0); cy = a(cy, (long)((unsigned long)p1 << 56) >> 56); cy = a(cy, p2); cy = a(cy, 0); x_r_pld_0 = *dn; cy = a(cy, x_r_pld_0); x_r_pld_1 = *x_rp1; cy = a(cy, x_r_pld_1); return cy; } int m(int p1, char p2, long p3, long p4, long p5, short p6) { ov3 = 490848161 - p5; di = -569641472 + ov0; uu_z0_0 = -108515076 - ov0; ot0_2_0 = p6 - 30196 - 11824; p = di - 3.0f; uu_z0_1 = p4 - ov3; af = 2.0f * p + (p3 ? p : 1.125f); ov3 = 1561645065 - p5; ot1_0_0 = p5 + 1023; p = p5 - 5898240; di = ac(12, -1, -1.75f, -536870912.0f, p6 - 16080, -1.75f) + 1375344105; uu_y22_34 = n(111, 851, -2403051615, 7243264503) + 2077153014; dm = uu_y22_34 + di; ov2 = -1744945241 + p4 - -78334; or = a(0, ov0); or = a(or, p); or = a(or, uu_z0_0); or = a(or, uu_z0_1); or = a(or, ov2); or = a(or, 8.0); or = a(or, p5); or = a(or, af); or = a(or, (long)((unsigned long)ot0_2_0 << 48) >> 48); or = a(or, ov3); or = a(or, 43); or = a(or, oa0_0_1); or = a(or, -1948669795); or = a(or, oa0_1_1); or = a(or, di); or = a(or, ot1_0_0); or = a(or, (long)((unsigned long)ot1_1 << 48) >> 48); or = a(or, dm); or = a(or, p1); or = a(or, 0); or = a(or, p2); or = a(or, p3); or = a(or, p4); or = a(or, p5); or = a(or, p6); or = a(or, oa0_0_1); or = a(or, ov0); return or ; } int n(char p1, int p2, long p3, long p4) { prpp0 = &prp1; prpp1 = &prp0; prv0 = -1; prt0_1 = 32767 + prv0; rb8: prt0_0 = 304555965 % p2 - ((long)((unsigned long)prv0 << 56) >> 56); *prpp0 = &prt0_0; prv5 = 31430061 % p2 - (p3 ? 1073741904 : 40345096) + 532941307; prv1 = 127 - -10 * prv0; *prpp1 = &prv0; prv3 = prv1 - prv0; if (prv1 - (56 - 2 - 4 - *prp0)) { prv0 = -7; goto rb8; } py25_11 = o(-21, 91, 1324, prt0_1 - 30702, -536870912.0f) - 327811360; prr = a(0, (long)((unsigned long)prv0 << 56) >> 56); prr = a(prr, prv1); prr = a(prr, prv2); prr = a(prr, prv3); prr = a(prr, prt0_0); prr = a(prr, prt0_1); prr = a(prr, p4); prr = a(prr, prv5); prr = a(prr, p1); prr = a(prr, py25_11); prr = a(prr, p3); prr = a(prr, 0); prr = a(prr, p4); pr_pld_0 = *prp0; prr = a(prr, (long)((unsigned long)pr_pld_0 << 56) >> 56); prr = a(prr, *prp1); return prr; } int o(char p1, char p2, short p3, short p4, float p5) { short rv1 = -67; urp1 = &urv4; urpp1 = &urp0; urv3 = 3108 - 11 * rv1; urp0 = &urv3; urv4 = p2 ^ 1923658781; ur__ao34 = urv4 & 1923658781; ur__ao35 = ~ur__ao34; ur__ao36 = urv4 | 1923658781; urv4 = ur__ao36 & ur__ao35; rv1 = 32768 + *urp0; urv2 = 83 - 127 + p1; urt1_0 = -18052 + 510317 - ((long)((unsigned long)urv2 << 56) >> 56); uy33_5 = p5; uy33_8 = *urp1; uy33_9 = bi(-14356, 202225647, uy33_5 - 3364224992, -939523904.0f, uy33_8 + 1342701477) + 1044648798; uy32_13 = aw(3959294717, -1, 1.0 + 4294967294, -1, ura0_0_0 + 76) + uy33_9; urv3 = rv1 + 32767 - 2 * p4; urv2 = 127 + ~p2; *urpp1 = &rv1; urv4 = uy32_13 + ((long)((unsigned long)rv1 << 48) >> 48); rv1 = urv3 - 105 * urv3; urv3 = (rv1 + p3) ^ 6717; urv0 = urv4; urv3 = urv3 ^ 6717; *urp1 = p3; urr = a(0, urv0); urr = a(urr, (long)((unsigned long)urt0_0 << 56) >> 56); urr = a(urr, urt0_1_0); urr = a(urr, urt0_1_1); urr = a(urr, urt0_1_2); urr = a(urr, urt1_0); urr = a(urr, rv1); urr = a(urr, urv2); urr = a(urr, (long)((unsigned long)ura0_0_0 << 56) >> 56); urr = a(urr, 15); urr = a(urr, (long)((unsigned long)ura0_0_2 << 56) >> 56); urr = a(urr, 76); urr = a(urr, (long)((unsigned long)ura0_1_1 << 56) >> 56); urr = a(urr, (long)((unsigned long)ura0_1_2 << 56) >> 56); urr = a(urr, 94); urr = a(urr, (long)((unsigned long)ura0_2_1 << 56) >> 56); urr = a(urr, (long)((unsigned long)ura0_2_2 << 56) >> 56); urr = a(urr, urv3); urr = a(urr, urv4); urr = a(urr, (long)((unsigned long)p1 << 56) >> 56); urr = a(urr, 0); urr = a(urr, p2); urr = a(urr, p3); urr = a(urr, p4); urr = a(urr, p5); ur_pld_0 = *urp0; urr = a(urr, ur_pld_0); urr = a(urr, *urp1); return urr; } int main() { int rr = cw(-4.25, -7, 31818, -1, -126); j(-1443168909, rr); }
