/* { dg-do run } */ /* { dg-options "-O" } */ #if __SIZEOF_INT__ == 2 #define int __INT32_TYPE__ #endif struct A { int b; int c; int d; }; struct E { int f; int g:18; struct A h; }; struct I { int b; int j; struct E k; }; int l, *m = &l; struct A n; struct I o; void __attribute__ ((noipa)) test_l (void) { if (l != 1) __builtin_abort (); } #undef int int main () { while (1) { struct I q = { 0, 0, {0, 0, {1, 1, 1}}}, p = q, r = p, *s = &q; if (p.k.h.c) o = p; *m = r.k.h.d; n = (*s).k.h; break; } test_l (); return 0; }