diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/CXX/drs/dr14xx.cpp | 10 | ||||
-rw-r--r-- | clang/test/CodeGenCXX/mangle-exprs.cpp | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/clang/test/CXX/drs/dr14xx.cpp b/clang/test/CXX/drs/dr14xx.cpp index c4d5608ad9e..94e733fb9ce 100644 --- a/clang/test/CXX/drs/dr14xx.cpp +++ b/clang/test/CXX/drs/dr14xx.cpp @@ -314,6 +314,16 @@ namespace dr1467 { // dr1467: 3.7 c++11 NonAggregate z{{x}}; } } // nonaggregate + + namespace SelfInitIsNotListInit { + struct S { + S(); + explicit S(S &); + S(const S &); + }; + S s1; + S s2 = {s1}; // ok, not list-initialization so we pick the non-explicit constructor + } } // dr1467 namespace dr1490 { // dr1490: 3.7 c++11 diff --git a/clang/test/CodeGenCXX/mangle-exprs.cpp b/clang/test/CodeGenCXX/mangle-exprs.cpp index 1048a31dbb2..ee2d546938e 100644 --- a/clang/test/CodeGenCXX/mangle-exprs.cpp +++ b/clang/test/CodeGenCXX/mangle-exprs.cpp @@ -298,6 +298,8 @@ namespace test7 { struct B { B(int, int); } extern b; struct C { C(B); }; struct D { D(C); }; + struct E { E(std::initializer_list<int>); }; + struct F { F(E); }; template<class T> decltype(A{1,2},T()) fA1(T t) {} template<class T> decltype(A({1,2}),T()) fA2(T t) {} @@ -307,6 +309,10 @@ namespace test7 { template<class T> decltype(C({1,2}),T()) fC2(T t) {} template<class T> decltype(D{b},T()) fD1(T t) {} template<class T> decltype(D(b),T()) fD2(T t) {} + template<class T> decltype(E{1,2},T()) fE1(T t) {} + template<class T> decltype(E({1,2}),T()) fE2(T t) {} + template<class T> decltype(F{{1,2}},T()) fF1(T t) {} + template<class T> decltype(F({1,2}),T()) fF2(T t) {} int main() { fA1(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fA1IiEEDTcmtlNS_1AELi1ELi2EEcvT__EES2_ @@ -317,5 +323,9 @@ namespace test7 { fC2(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fC2IiEEDTcmcvNS_1CEilLi1ELi2EEcvT__EES2_ fD1(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fD1IiEEDTcmtlNS_1DEL_ZNS_1bEEEcvT__EES2_ fD2(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fD2IiEEDTcmcvNS_1DEL_ZNS_1bEEcvT__EES2_ + fE1(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fE1IiEEDTcmtlNS_1EELi1ELi2EEcvT__EES2_ + fE2(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fE2IiEEDTcmcvNS_1EEilLi1ELi2EEcvT__EES2_ + fF1(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fF1IiEEDTcmtlNS_1FEilLi1ELi2EEEcvT__EES2_ + fF2(1); // CHECK-LABEL: define {{.*}} @_ZN5test73fF2IiEEDTcmcvNS_1FEilLi1ELi2EEcvT__EES2_ } } |