OSDN Git Service

Backported from mainline
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / pr58277-1.c
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
11 bar ()
12 {
13   u = 0;
14   return m;
15 }
16
17 __attribute__((noinline, noclone)) void
18 baz ()
19 {
20   asm ("");
21 }
22
23 static int
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
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 }