/* { dg-do run } */ extern void abort (void); int i, j, *pj = &j, **ppj = &pj; int x, *px = &x; short s, *ps = &s, k; unsigned short u, *pu = &u, **ppu = &pu; char c, *pc = &c; unsigned char v = 48; static int bar (int p) { p = k; *px = **ppu = i; *ppj = &p; if (**ppj) *pj = p; return p; } void __attribute__((noinline)) foo () { for (; i <= 3; i++) for (; j; j--); u ^= bar (*pj); for (k = 1; k >= 0; k--) { int l; bar (0); for (l = 1; l < 5; l++) { int m; for (m = 6; m; m--) { v--; *ps = *pc; } } } } int main () { foo (); if (v != 0) abort (); return 0; }