diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-05 07:02:11 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-02-05 07:02:11 +0000 |
commit | ed83ebd77e12e561d435574fbe093a220f270e4e (patch) | |
tree | e3650f69e384d49e014b196a97e44923ccd09407 /clang/test/CodeGenCXX/mangle-exprs.cpp | |
parent | 6956e2e68338f62bd19d54b82f0791a8f626c84d (diff) | |
download | bcm5719-llvm-ed83ebd77e12e561d435574fbe093a220f270e4e.tar.gz bcm5719-llvm-ed83ebd77e12e561d435574fbe093a220f270e4e.zip |
PR22465: when performing list-initialization for a class type C, if we see an
initializer of the form {x}, where x is of type C or a type derived from C,
perform *non-list* initialization of the entity from x, but create a
CXXConstructExpr that knows that we used list-initialization syntax.
Plus some fixes to ensure we mangle correctly in this and related cases.
llvm-svn: 228276
Diffstat (limited to 'clang/test/CodeGenCXX/mangle-exprs.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/mangle-exprs.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
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_ } } |