29 lines
383 B
C
29 lines
383 B
C
/* 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;
|
|
}
|