[llvm-branch-commits] [cfe-branch] r118565 - in /cfe/branches/Apple/whitney: lib/CodeGen/CGException.cpp lib/CodeGen/CGException.h test/CodeGen/exceptions.c
Daniel Dunbar
daniel at zuster.org
Tue Nov 9 09:32:08 PST 2010
Author: ddunbar
Date: Tue Nov 9 11:32:07 2010
New Revision: 118565
URL: http://llvm.org/viewvc/llvm-project?rev=118565&view=rev
Log:
Merge r118366:
--
Author: John McCall <rjmccall at apple.com>
Date: Sun Nov 7 02:35:25 2010 +0000
ARM EH uses a different personality function in C.
Added:
cfe/branches/Apple/whitney/test/CodeGen/exceptions.c
Modified:
cfe/branches/Apple/whitney/lib/CodeGen/CGException.cpp
cfe/branches/Apple/whitney/lib/CodeGen/CGException.h
Modified: cfe/branches/Apple/whitney/lib/CodeGen/CGException.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/whitney/lib/CodeGen/CGException.cpp?rev=118565&r1=118564&r2=118565&view=diff
==============================================================================
--- cfe/branches/Apple/whitney/lib/CodeGen/CGException.cpp (original)
+++ cfe/branches/Apple/whitney/lib/CodeGen/CGException.cpp Tue Nov 9 11:32:07 2010
@@ -300,6 +300,7 @@
}
const EHPersonality EHPersonality::GNU_C("__gcc_personality_v0");
+const EHPersonality EHPersonality::GNU_C_SJLJ("__gcc_personality_sj0");
const EHPersonality EHPersonality::NeXT_ObjC("__objc_personality_v0");
const EHPersonality EHPersonality::GNU_CPlusPlus("__gxx_personality_v0");
const EHPersonality EHPersonality::GNU_CPlusPlus_SJLJ("__gxx_personality_sj0");
@@ -307,6 +308,8 @@
"objc_exception_throw");
static const EHPersonality &getCPersonality(const LangOptions &L) {
+ if (L.SjLjExceptions)
+ return EHPersonality::GNU_C_SJLJ;
return EHPersonality::GNU_C;
}
Modified: cfe/branches/Apple/whitney/lib/CodeGen/CGException.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/whitney/lib/CodeGen/CGException.h?rev=118565&r1=118564&r2=118565&view=diff
==============================================================================
--- cfe/branches/Apple/whitney/lib/CodeGen/CGException.h (original)
+++ cfe/branches/Apple/whitney/lib/CodeGen/CGException.h Tue Nov 9 11:32:07 2010
@@ -44,6 +44,7 @@
public:
static const EHPersonality &get(const LangOptions &Lang);
static const EHPersonality GNU_C;
+ static const EHPersonality GNU_C_SJLJ;
static const EHPersonality GNU_ObjC;
static const EHPersonality NeXT_ObjC;
static const EHPersonality GNU_CPlusPlus;
Added: cfe/branches/Apple/whitney/test/CodeGen/exceptions.c
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/Apple/whitney/test/CodeGen/exceptions.c?rev=118565&view=auto
==============================================================================
--- cfe/branches/Apple/whitney/test/CodeGen/exceptions.c (added)
+++ cfe/branches/Apple/whitney/test/CodeGen/exceptions.c Tue Nov 9 11:32:07 2010
@@ -0,0 +1,19 @@
+// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s -fexceptions -fblocks | FileCheck %s
+// RUN: %clang_cc1 -triple armv7-apple-unknown -emit-llvm -o - %s -fexceptions -fsjlj-exceptions -fblocks | FileCheck %s -check-prefix=CHECK-ARM
+
+// rdar://problem/8621849
+void test1() {
+ extern void test1_helper(void (^)(int));
+
+ // CHECK: define void @test1()
+ // CHECK-ARM: define arm_aapcscc void @test1()
+
+ __block int x = 10;
+
+ // CHECK: invoke void @test1_helper(
+ // CHECK-ARM: invoke arm_aapcscc void @test1_helper(
+ test1_helper(^(int v) { x = v; });
+
+ // CHECK: call {{.*}} @llvm.eh.selector({{.*}}, i8* bitcast (i32 (...)* @__gcc_personality_v0 to i8*)
+ // CHECK-ARM: call {{.*}} @llvm.eh.selector({{.*}}, i8* bitcast (i32 (...)* @__gcc_personality_sj0 to i8*)
+}
More information about the llvm-branch-commits
mailing list