https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104178
Bug ID: 104178 Summary: -fcompare-debug failure at -O3 -m32 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: cnsun at uwaterloo dot ca Target Milestone: --- $ gcc-trunk small.c -w -m32 -fcompare-debug -O3 gcc-trunk: error: small.c: ‘-fcompare-debug’ failure (length) $ cat small.c static int a, g, h, k, l, m, p, r, s, u, w, z, aa, ab, ac, ad; char b, ae, af; struct c { int d; int e; } e[1]; static char f; static short i; static struct c j, x; static unsigned n; int *o, *t; static char q; int v; int y; int ag; int ah; int ai; int aj; int ak; static char al() { int am[] = {0, 1, 9, 6, 3, 4, 3, 0, 3, 4, 3, 9, 0, 6, 1, 1, 6, 0, 2, 4, 6, 4, 2, 4, 6, 1, 1, 6, 0, 9, 9, 0, 3, 0, 3, 4, 3, 0, 3}; int an = 8, ao = r; int c[] = {2, 2, 2, 2, 2}; char ap; if (ao) { ap = af; for (; t; t++) printf("index = \n"); } af = r = ao; int *aq = 0; { int *b[] = {o, o, o, o, o, o, o, o, o, o, o, o, o}; if (r) { struct c c[] = {*e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e, *e}; k = ab; for (; u;) { struct c d = {1}; ak = 0; int ar = f ^ p; as: if (ar) { printf("", p); p = a ^ p; } } } if (z) goto at; a = l; an = 5; } if (f) { int *au[10]; aa = 0; for (; aa < 10; aa++) au[aa] = &an; for (; m;) ; a = r; } if (g) f = 1; for (; f;) { while (an < 5 || i) ae = q; int c[] = {*o, *o, *o, *o, *o, *o, *o, *o, *o, *o, *o, *o, *o}; if (w) for (;;) { if (r) break; a = a ^ printf(&b); for (; ac; ac++) ; } else *aq = r; ai = r; n = (an || ~r) + n || j.d; if (r) a = a ^ 5; if (s) printf(&b); printf("", s); if (p) { s = 3; for (; s;) if (ap) ap = 0; } int av = h ^ q, aw = j.e ^ av; while (h++) { a = a ^ 5; if (k) printf(&b); } if (aw) v = j.e ^ q; at: b = ag = w = 0; if (f) goto ax; z = h; a = k; if (n) printf("", m); if (k) { printf("", k); m = n & m + k; } a = j.d; u = n + l; if (ah) break; ay: if (l) q = j.d; } int az = i || m; int ba = g || f; g = i = az; *e = x; char bb = n & m & p || r; ax: if (y) { printf("", ba); goto as; } af = bb; b = i | n; if (j.d) printf("", e); char bc = p & n | i; n = bc; int bd = l & m; m = bd; if (aj) { printf("", ad); m = l; goto ay; } l = f; j = e[0]; } int main() { al(); } $ gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/scratch/software/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/12.0.1/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /tmp/tmp.OLkXuGPSxC-gcc-builder/gcc/configure --enable-languages=c,c++,lto --enable-checking-yes --enable-multiarch --prefix=/scratch/software/gcc-trunk --disable-bootstrap Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.1 20220121 (experimental) [master -gcaca8eddd] (GCC) $