summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-02-19 15:41:54 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-02-19 15:41:54 +0000
commit4e04dd1979795f7a674479bbf48ee2ead19a3933 (patch)
tree7061ff5de137edc8d997b1423007225b5fea3e77 /clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
parent7c24d8e70b8a00b72878a78b8ac490f26ef237de (diff)
downloadbcm5719-llvm-4e04dd1979795f7a674479bbf48ee2ead19a3933.tar.gz
bcm5719-llvm-4e04dd1979795f7a674479bbf48ee2ead19a3933.zip
Make std::initializer_list member initializers 'work'.
llvm-svn: 150930
Diffstat (limited to 'clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp')
-rw-r--r--clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
index 7dc5503c969..55e39922385 100644
--- a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
+++ b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist.cpp
@@ -164,3 +164,34 @@ void fn9() {
// CHECK-NOT: call void @_ZN10destroyme1D1Ev
// CHECK: ret void
}
+
+struct haslist1 {
+ std::initializer_list<int> il;
+ haslist1();
+};
+
+// CHECK: define void @_ZN8haslist1C2Ev
+haslist1::haslist1()
+// CHECK: alloca [3 x i32]
+// CHECK: store i32 1
+// CHECK: store i32 2
+// CHECK: store i32 3
+// CHECK: store i{{32|64}} 3
+ : il{1, 2, 3}
+{
+ destroyme2 dm2;
+}
+
+struct haslist2 {
+ std::initializer_list<destroyme1> il;
+ haslist2();
+};
+
+// CHECK: define void @_ZN8haslist2C2Ev
+haslist2::haslist2()
+ : il{destroyme1(), destroyme1()}
+{
+ destroyme2 dm2;
+ // CHECK: call void @_ZN10destroyme2D1Ev
+ // CHECK: call void @_ZN10destroyme1D1Ev
+}
OpenPOWER on IntegriCloud