summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/static-destructor.cpp
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@google.com>2016-05-10 17:44:55 +0000
committerDerek Schuff <dschuff@google.com>2016-05-10 17:44:55 +0000
commit8179be4897db025dd7256bbee7c0d9e5794a2b34 (patch)
tree78dc08b1c3578d7505ee2565cc1f8939f6a93c50 /clang/test/CodeGenCXX/static-destructor.cpp
parent09b2492387267439d20f59725bd8caf0a24d0a41 (diff)
downloadbcm5719-llvm-8179be4897db025dd7256bbee7c0d9e5794a2b34.tar.gz
bcm5719-llvm-8179be4897db025dd7256bbee7c0d9e5794a2b34.zip
Introduce CGCXXABI::canCallMismatchedFunctionType
llvm-svn: 269089
Diffstat (limited to 'clang/test/CodeGenCXX/static-destructor.cpp')
-rw-r--r--clang/test/CodeGenCXX/static-destructor.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/static-destructor.cpp b/clang/test/CodeGenCXX/static-destructor.cpp
index 1b6ca305563..24e31d3d863 100644
--- a/clang/test/CodeGenCXX/static-destructor.cpp
+++ b/clang/test/CodeGenCXX/static-destructor.cpp
@@ -1,6 +1,6 @@
// RUN: %clang_cc1 %s -triple=x86_64-pc-linux -emit-llvm -o - | FileCheck --check-prefix=X86 %s
// RUN: %clang_cc1 %s -triple=wasm32 -emit-llvm -o - | FileCheck --check-prefix=WASM %s
-// RUN: %clang_cc1 %s -triple=armv7-apple-darwin9 -emit-llvm -o - | FileCheck --check-prefix=WASM %s
+// RUN: %clang_cc1 %s -triple=armv7-apple-darwin9 -emit-llvm -o - | FileCheck --check-prefix=ARM %s
// Test that destructors are not passed directly to __cxa_atexit when their
// signatures do not match the type of its first argument.
@@ -20,6 +20,12 @@ Foo global;
// X86-NEXT: entry:
// X86-NEXT: %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%class.Foo*)* @_ZN3FooD1Ev to void (i8*)*), i8* getelementptr inbounds (%class.Foo, %class.Foo* @global, i32 0, i32 0), i8* @__dso_handle)
+// ARM destructors return this, but can be registered directly with __cxa_atexit
+// because the calling conventions tolerate the mismatch.
+// ARM: define internal void @__cxx_global_var_init()
+// ARM-NEXT: entry:
+// ARM-NEXT: %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (%class.Foo* (%class.Foo*)* @_ZN3FooD1Ev to void (i8*)*), i8* getelementptr inbounds (%class.Foo, %class.Foo* @global, i32 0, i32 0), i8* @__dso_handle)
+
// Wasm destructors return this, and use a wrapper function, which is registered
// with __cxa_atexit.
// WASM: define internal void @__cxx_global_var_init()
OpenPOWER on IntegriCloud