summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-12-21 03:17:28 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-12-21 03:17:28 +0000
commitd82a2ce3a08f1f67143e68547828f0963b333e7a (patch)
tree15f97880e137ec749ac74b6bb26086dfa3dea26d /clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
parent59421aee3dc819081097ccbc65c97ee3a7b8bdaa (diff)
downloadbcm5719-llvm-d82a2ce3a08f1f67143e68547828f0963b333e7a.tar.gz
bcm5719-llvm-d82a2ce3a08f1f67143e68547828f0963b333e7a.zip
Reinstate r170806, reverted in r170835, with a fix use i1 instead of i8 for a value-initialized bool!
llvm-svn: 170837
Diffstat (limited to 'clang/test/CodeGenCXX/cxx0x-initializer-array.cpp')
-rw-r--r--clang/test/CodeGenCXX/cxx0x-initializer-array.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp b/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
index df689978a88..5e81ba1ff9d 100644
--- a/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
+++ b/clang/test/CodeGenCXX/cxx0x-initializer-array.cpp
@@ -1,5 +1,7 @@
// RUN: %clang_cc1 -triple i386-unknown-unknown -std=c++11 -S -emit-llvm -o - %s | FileCheck %s
+// CHECK: @[[THREE_NULL_MEMPTRS:.*]] = private constant [3 x i32] [i32 -1, i32 -1, i32 -1]
+
struct A { int a[1]; };
typedef A x[];
int f() {
@@ -7,4 +9,42 @@ int f() {
// CHECK: define i32 @_Z1fv
// CHECK: store i32 1
// (It's okay if the output changes here, as long as we don't crash.)
+ return 0;
+}
+
+namespace ValueInitArrayOfMemPtr {
+ struct S {};
+ typedef int (S::*p);
+ typedef p a[3];
+ void f(const a &);
+
+ struct Agg1 {
+ int n;
+ p x;
+ };
+
+ struct Agg2 {
+ int n;
+ a x;
+ };
+
+ struct S1 {
+ p x;
+ S1();
+ };
+
+ // CHECK: define void @_ZN22ValueInitArrayOfMemPtr1fEi
+ void f(int n) {
+ Agg1 a = { n };
+ // CHECK: store i32 -1,
+
+ Agg2 b = { n };
+ // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %{{.*}}, i8* bitcast ([3 x i32]* @[[THREE_NULL_MEMPTRS]] to i8*), i32 12, i32 4, i1 false)
+ }
+
+ // CHECK: define void @_ZN22ValueInitArrayOfMemPtr1gEv
+ void g() {
+ // CHECK: store i32 -1,
+ f(a{});
+ }
}
OpenPOWER on IntegriCloud