PR c++/80290
[official-gcc.git] / gcc / testsuite / g++.dg / opt / nrv9.C
blob462506867d439fef6a89256d30fc0593e4484b34
1 // PR c++/19317
2 // If we do both NRV and caller-side return slot opt for ga = f()
3 // constructing la sets ga.i to 0 too soon.
5 extern "C" void abort();
7 struct A
9   int i;
10   int pad[32];                  // force return in memory
11   A(): i(0) {}
12   A(int ia): i(ia) {}
15 A ga(42);
17 A f()
19   A la;
20   if (ga.i != 42)
21     abort();
22   return la;
25 int main()
27   ga = f ();