/* { dg-do run } */ /* { dg-options "-O2" } */ extern void abort (void); int a, b, *c = &b, d = -1, e, f, *g, *h = &f, **i = &g, j; unsigned int foo (unsigned int p) { return p == 0 ? 0 : 1 / p; } static int * bar () { *c = *h = foo (d) & (-9 < d); for (e = 0; e; e++) ; return 0; } int main () { for (; j; j++) for (;; a--) ; *i = bar (); if (f != 0) abort (); return 0; }