| /* Test that the NRV optimization doesn't cause a1 to change too soon. This | |
| is equivalent to c++/19317. */ | |
| /* { dg-do run } */ | |
| void abort (void); | |
| struct A | |
| { | |
| int i[100]; | |
| }; | |
| struct A a1; | |
| struct A f () | |
| { | |
| struct A a2; | |
| a2.i[0] = 42; | |
| /* a1.i[0] should still be 0 until we return. */ | |
| if (a1.i[0] != 0) | |
| abort (); | |
| return a2; | |
| } | |
| int main() | |
| { | |
| a1 = f(); | |
| return 0; | |
| } |