1 // PR tree-optimization/28003
2 // Alias grouping needs to be computed after call clobbering, because it
3 // changes around the tags and variables in a way that makes our
4 // call clobbering computation incorrect.
5 // { dg-do run }
6 // { dg-options "-O2" }
7 extern "C" void abort(void);
8 struct A
9 {
10   int i, j[9];
AA11   A() : i(1) { j[0]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=0; }
12 };
13 
14 struct B
15 {
16   A a;
17 };
18 
19 B b[] =
20 {
21   {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
22   {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
23   {}, {}, {}, {}, {}
24 };
25 
main()26 int main()
27 {
28   if (1 - b[sizeof(b)/sizeof(B) - 1].a.i != 0)
29     abort();
30   return 0;
31 }
32