// PR tree-optimization/28003
|
// PR tree-optimization/28003
|
// Alias grouping needs to be computed after call clobbering, because it
|
// Alias grouping needs to be computed after call clobbering, because it
|
// changes around the tags and variables in a way that makes our
|
// changes around the tags and variables in a way that makes our
|
// call clobbering computation incorrect.
|
// call clobbering computation incorrect.
|
// { dg-do run }
|
// { dg-do run }
|
// { dg-options "-O2" }
|
// { dg-options "-O2" }
|
extern "C" void abort(void);
|
extern "C" void abort(void);
|
struct A
|
struct A
|
{
|
{
|
int i, j[9];
|
int i, j[9];
|
A() : i(1) { j[0]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=0; }
|
A() : i(1) { j[0]=j[1]=j[2]=j[3]=j[4]=j[5]=j[6]=j[7]=j[8]=0; }
|
};
|
};
|
|
|
struct B
|
struct B
|
{
|
{
|
A a;
|
A a;
|
};
|
};
|
|
|
B b[] =
|
B b[] =
|
{
|
{
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {},
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {},
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {},
|
{}, {}, {}, {}, {}, {}, {}, {}, {}, {},
|
{}, {}, {}, {}, {}
|
{}, {}, {}, {}, {}
|
};
|
};
|
|
|
int main()
|
int main()
|
{
|
{
|
if (1 - b[sizeof(b)/sizeof(B) - 1].a.i != 0)
|
if (1 - b[sizeof(b)/sizeof(B) - 1].a.i != 0)
|
abort();
|
abort();
|
return 0;
|
return 0;
|
}
|
}
|
|
|