summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/global-array-destruction.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2012-04-22 05:51:36 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2012-04-22 05:51:36 +0000
commit1664d540d1524f0faffd2f839fccb56178975c60 (patch)
treec0b092e0317e16743510727d7a57ffbeef2f1247 /test/CodeGenCXX/global-array-destruction.cpp
parenta77e0726341a4afbe9c25b05cf944edf17f64543 (diff)
PR12571: Objects of type clang::ConstantArrayType aren't always emitted with
type llvm::ArrayType -- sometimes we emit them as packed structs. Don't assert if such a global array has an element type with a non-trivial destructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155305 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/global-array-destruction.cpp')
-rw-r--r--test/CodeGenCXX/global-array-destruction.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/test/CodeGenCXX/global-array-destruction.cpp b/test/CodeGenCXX/global-array-destruction.cpp
index 5b5dfac0f2..076ef94220 100644
--- a/test/CodeGenCXX/global-array-destruction.cpp
+++ b/test/CodeGenCXX/global-array-destruction.cpp
@@ -1,6 +1,4 @@
-// REQUIRES: x86-64-registered-target
-// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
-// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
+// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -emit-llvm %s -o - | FileCheck %s
extern "C" int printf(...);
@@ -24,11 +22,24 @@ static S sarr1[4];
S s2;
S arr3[3];
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
-// CHECK-LP64: callq ___cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: call {{.*}} @__cxa_atexit
+
+struct T {
+ double d;
+ int n;
+ ~T();
+};
+T t[2][3] = { 1.0, 2, 3.0, 4, 5.0, 6, 7.0, 8, 9.0, 10, 11.0, 12 };
+
+// CHECK: call {{.*}} @__cxa_atexit
+// CHECK: getelementptr inbounds ({{.*}} bitcast {{.*}}* @t to %struct.T*), i64 6
+// CHECK: call void @_ZN1TD1Ev
+// CHECK: icmp eq {{.*}} @t
+// CHECK: br i1 {{.*}}