1 /* PR tree-optimization/58277 */
2 
3 extern void abort (void);
4 static int a[2];
5 int b, c, d, *e, f, g, h, **i = &e, k, l = 1, n, o, p;
6 static int **volatile j = &e;
7 const int m;
8 char u;
9 
10 int
bar()11 bar ()
12 {
13   u = 0;
14   return m;
15 }
16 
17 __attribute__((noinline, noclone)) void
baz()18 baz ()
19 {
20   asm ("");
21 }
22 
23 static int
foo()24 foo ()
25 {
26   int t1;
27   g = bar ();
28   if (l)
29     ;
30   else
31     for (;; h++)
32       {
33 	*i = 0;
34 	o = *e = 0;
35 	if (p)
36 	  {
37 	    f = 0;
38 	    return 0;
39 	  }
40 	for (;; k++)
41 	  {
42 	    int *t2 = 0;
43 	    int *const *t3[] = {
44 	      0, 0, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, &t2, &t2, &t2,
45 	      &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0,
46 	      0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, &t2,
47 	      &t2, &t2, &t2, 0, 0, 0, 0, 0, 0, 0, &t2, 0, 0, 0,
48 	      &t2, 0, 0, 0, &t2, 0, &t2, 0, 0, &t2, 0, 0, 0, 0,
49 	      0, &t2, 0, 0, 0, 0, &t2, &t2, 0, 0, 0, 0, &t2, 0,
50 	      0, 0, 0, 0, 0, 0, &t2, 0, 0, 0, 0, 0, &t2, 0, 0, 0,
51 	      &t2, &t2
52 	    };
53 	    int *const **t4[] = {&t3[0]};
54 	    **i = 0;
55 	    if (**j)
56 	      break;
57 	    u = 0;
58 	  }
59 	*i = *j;
60 	t1 = 0;
61 	for (; t1 < 5; t1++)
62 	  *i = *j;
63       }
64   *j = 0;
65   return 1;
66 }
67 
68 int
main()69 main ()
70 {
71   int t5;
72   a[0] = 1;
73   {
74     int *t6[6] = {&d, &d};
75     for (n = 1; n; n--)
76       if (foo())
77 	{
78 	  int *t7[] = {0};
79 	  d = 0;
80 	  for (; u < 1; u++)
81 	    *i = *j;
82 	  *i = 0;
83 	  *i = 0;
84 	  int t8[5] = {0};
85 	  *i = &t8[0];
86 	  int *const *t9 = &t6[0];
87 	  int *const **t10 = &t9;
88 	  *t10 = &t7[0];
89 	}
90   }
91   u = 0;
92   for (; b; b++)
93     for (t5 = 0; t5 < 10; t5++)
94       c = a[a[a[a[a[a[a[a[c]]]]]]]];
95 
96   baz ();
97 
98   if (!a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[u]]]]]]]]]]]]]]])
99     abort ();
100 
101   return 0;
102 }
103