| // Test for constant initialization of non-literal class (e.g. mutex) | |
| // { dg-options "-save-temps" } | |
| // { dg-do run { target c++11 } } | |
| struct A | |
| { | |
| int i; | |
| constexpr A(int _i): i(_i) { } | |
| A(const A&); // non-trivial copy ctor makes A non-literal | |
| }; | |
| A a(42); // constexpr constructor allows constant initialization | |
| A ar[3] = { { 1 }, { 2 }, { 3 } }; | |
| // { dg-final { scan-assembler-not "static_initialization" } } | |
| int main() | |
| { | |
| if (a.i != 42 | |
| || ar[0].i != 1 | |
| || ar[1].i != 2 | |
| || ar[2].i != 3) | |
| return 1; | |
| } |