1 // PR tree-optimization/43655 2 // { dg-do run } 3 // { dg-options "-O0 -ftree-ter" } 4 5 extern "C" void abort (); 6 7 struct C 8 { CC9 C (int i) : val(i) { } CC10 C (const C& c) : val(c.val) { } ~CC11 ~C (void) { val = 999; } 12 C& operator = (const C& c) { val = c.val; return *this; } incC13 C& inc (int i) { val += i; return *this; } 14 int val; 15 }; 16 17 C f()18f () 19 { 20 return C (3); 21 } 22 23 C f(int i)24f (int i) 25 { 26 return f ().inc (i); 27 } 28 29 int main()30main () 31 { 32 if (f (2).val != 5) 33 abort (); 34 } 35