// PR middle-end/15054 | |
// { dg-do run } | |
// { dg-options "-O2" } | |
extern "C" void abort (void); | |
void | |
__attribute__((noinline)) | |
check (long x, long y) | |
{ | |
if (x != y) | |
abort (); | |
} | |
struct A | |
{ | |
A() : a(2) { check (a, 2); } | |
~A() { check (a, 2); } | |
private: | |
long a; | |
}; | |
class B { | |
long b; | |
B& operator =(const B& ); | |
public: | |
B (long p) : b(p) { check (b, 6); } | |
B (const B& p) : b(p.b) { check (b, 6); } | |
~B () { check (b, 6); A obj; check (b, 6); } | |
B foo() { return B(*this); } | |
}; | |
int main () | |
{ | |
B o(6); | |
o.foo().foo(); | |
return 0; | |
} |