https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101260
Bug ID: 101260 Summary: Backport 27381e78925 to GCC 11 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: stefansf at linux dot ibm.com Target Milestone: --- Target: s390*-*-* struct a { unsigned b : 7; int c; int d; short e; } p, *q = &p; int f, g, h, i, r, s; static short j[8][1][6] = {}; char k[7]; short l, m; int *n; int **o = &n; void t() { for (; f;) ; } static struct a u(int x) { struct a a = {4, 8, 5, 4}; for (; i <= 6; i++) { struct a v = {}; for (; l; l++) h = 0; for (; h >= 0; h--) { j[i]; struct a *w = &p; s = 0; for (; s < 3; s++) { r ^= x; m = j[i][g][h] == (k[g] = g); *w = v; } r = 2; for (; r; r--) *o = &r; } } t(); return a; } int main() { *q = u(636); if (p.b != 4) __builtin_abort (); } The reduced example runs fine if compiled with mainline (currently 53fd7544aff) whereas it fails if compiled with GCC 11 (currently f6306457ee3). The example runs fine with GCC 11, too, if commit d1d01a66012a93cc8cb7dafbe1b5ec453ec96b59 is cherry picked. Can we backport this one?