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()18 f ()
19 {
20   return C (3);
21 }
22 
23 C
f(int i)24 f (int i)
25 {
26   return f ().inc (i);
27 }
28 
29 int
main()30 main ()
31 {
32   if (f (2).val != 5)
33     abort ();
34 }
35