https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99621
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[8/9/10/11 REGRESSION] |[8/9/10/11 Regression] |[bisected to |Wrong code with -m32 -O1 |058e97ecf33ad0dfd926b3876a4 |-fcaller-saves |bcf59ac9556ff] regression |-fexpensive-optimizations |with -m32 -O1 |since |-fcaller-saves |g:058e97ecf33ad0dfd926b3876 |-fexpensive-optimizations |a4bcf59ac9556ff CC| |vmakarov at gcc dot gnu.org --- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- I just removed all the warnings that were reported: #include <stdio.h> int a = 12243, g, ad, o, p; enum { b = 8 }; typedef struct { int data_len; } d; double e; struct j ak; struct j am_sj; d main_breaks_blob; double q(char *aa, int *ab, int c) { double n; int i = *ab; g = 1; if (aa[i] == '-') { g = -1; i++; } n = 0; while (aa[i] >= '0') { n = n * 10 + aa[i] - '0'; i++; } if (aa[i] == '.') i++; e = 1.0; while (aa[i] >= '0') { e *= 10; n += (aa[i] - '0') / e; i++; } n *= g; *ab = i; return n; } struct j { FILE *k; } l(d *m, int r) { int ae = 1; ad = r; while (ad >= 10) { ae++; ad /= 10; } m->data_len += ae; m->data_len++; } void af(char *aa, int ag, int ah, double *ai, int aj) { for (; p < ah; p++) { double n = 0; o++; while (aa[o] >= '0') { n = n * 10 + aa[o] - '0'; o++; } ai[p] = n; } } void am(char *an, d *m) { int ao, ap, aq, ac, ag, ab, aw; double ar, as, at, au, av; char aa[8192]; struct j *ay, *f = &am_sj; FILE *az; char *ba = an; f->k = fopen(ba, "r"); ak = *f; ay = &ak; az = ay->k; m->data_len = b + 1; while (aw != EOF) { ag = 0; while (aw != '\r' && ag < 92) { aa[ag++] = aw; aw = getc(az); } while (aw == '\n' || aw == '\r') aw = getc(az); if (__builtin_strncmp(aa, "%%HiResBoundingBox", 9) == 0) { int i; double ai[4]; i = 19; af(&aa[i], i, 4, ai, 0); ar = ai[3]; } ab = 0; int bb; double bc, bd; bb = 0; if (aa[ab] == 'g') bb = ab = 2; bc = q(aa, &ab, ac); ab++; bd = q(aa, &ab, ac); ab++; if (bb) au += bc; if (!as && __builtin_memcmp(&aa[ab], "1 dup neg S t", 3) == 0) { as = au = bc; av = bd; } if (aa[ab] == 'm' && aw == '<') { bc += au; bd += av + ar; if (bd > at || bc > a * 72 / 7227) { double be; int bf = bd < at; be = bd; if (bd - at < 2) be += 8; if (bf) aq += ap; at = bd; ap = be; ao = (aq + be) * 7227 / 72; l(m, ao); } } } } int main() { am("4329652-1.eps", &main_breaks_blob); printf("%d %s\n", main_breaks_blob, main_breaks_blob.data_len == 5167 ? "bug" : "ok"); } Leaving that to Vlad.