1 /* { dg-do run } */
2 /* { dg-additional-options "-fstrict-overflow" } */
3 
4 extern void abort (void);
5 
6 int a, b, c, d, e, f, g, h = 1, i;
7 
foo(int p)8 int foo (int p)
9 {
10   return p < 0 && a < - __INT_MAX__ - 1 - p ? 0 : 1;
11 }
12 
bar()13 int *bar ()
14 {
15   int j;
16   i = h ? 0 : 1 % h;
17   for (j = 0; j < 1; j++)
18     for (d = 0; d; d++)
19       for (e = 1; e;)
20 	return 0;
21   return 0;
22 }
23 
baz()24 int baz ()
25 {
26   for (; b >= 0; b--)
27     for (c = 1; c >= 0; c--)
28       {
29 	int *k = &c;
30 	for (;;)
31 	  {
32 	    for (f = 0; f < 1; f++)
33 	      {
34 		g = foo (*k);
35 		bar ();
36 	      }
37 	    if (*k)
38 	      break;
39 	    return 0;
40 	  }
41       }
42   return 0;
43 }
44 
main()45 int main ()
46 {
47   baz ();
48   if (b != 0)
49     abort ();
50   return 0;
51 }
52