Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / testsuite / g++.dg / opt / nrv8.C
blob19999a18824d309cd27cc31437b91e8e8e949a59
1 // PR optimization/19531
2 // forbids NRV on volatile return value.
3 // { dg-options -O2 }
4 // { dg-do run }
6 extern "C" { void abort(); }
8 struct A
10   int d;
12   A ()                     { d = 123; }
13   A (const A & o)          { d = o.d;  }
14   A (volatile const A & o) { d = o.d + 2; }
17 A bar()
19   volatile A l;
20   return l;
23 main()
25   A a = bar ();
27   if (a.d != 125)
28     abort();
30   return 0;