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