summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-07-25 01:12:44 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-07-25 01:12:44 +0000
commitc6abd96bffa1d5743e985235863bc75c3ed58036 (patch)
tree4bd0a43a328adab0c1916f86cb260a59ddf8e119 /clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
parentd86c901f29b673161a8728ad853abff262cceb42 (diff)
downloadbcm5719-llvm-c6abd96bffa1d5743e985235863bc75c3ed58036.tar.gz
bcm5719-llvm-c6abd96bffa1d5743e985235863bc75c3ed58036.zip
PR20445: Properly transform the initializer in a CXXNewExpr rather than running
it through the normal TreeTransform logic for Exprs (which will strip off implicit parts of the initialization and never re-create them). llvm-svn: 213913
Diffstat (limited to 'clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp')
-rw-r--r--clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
index 33bd8441040..4d30344e3c8 100644
--- a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
+++ b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
@@ -455,3 +455,13 @@ namespace ArrayOfInitList {
};
S x[1] = {};
}
+
+namespace PR20445 {
+ struct vector { vector(std::initializer_list<int>); };
+ struct MyClass { explicit MyClass(const vector &v); };
+ template<int x> void f() { new MyClass({42, 43}); }
+ template void f<0>();
+ // CHECK-LABEL: define {{.*}} @_ZN7PR204451fILi0EEEvv(
+ // CHECK: call void @_ZN7PR204456vectorC1ESt16initializer_listIiE(
+ // CHECK: call void @_ZN7PR204457MyClassC1ERKNS_6vectorE(
+}
OpenPOWER on IntegriCloud