// PR c++/8674 | |
// Bug: Since B().a is an rvalue, we tried to treat it like a TARGET_EXPR | |
// and elide the copy. But that produces a bitwise copy, which causes us | |
// to abort in cp_expr_size. | |
// Test that we actually run the A copy constructor when calling f(). | |
// { dg-do run } | |
int c; | |
struct A | |
{ | |
A () { ++c; } | |
A (const A&) { ++c; } | |
}; | |
struct B | |
{ | |
A a; | |
}; | |
void f (A) { } | |
int main () | |
{ | |
f (B().a); | |
return c < 2; | |
} |