mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-14 15:25:25 +00:00
Move EH personality type classification to Analysis/LibCallSemantics.h
Summary: Also add enum types for __C_specific_handler and _CxxFrameHandler3 for which we know a few things. Reviewers: majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7214 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227284 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
declare i32 @generic_personality(i32, i64, i8*, i8*)
|
||||
declare i32 @__gxx_personality_v0(i32, i64, i8*, i8*)
|
||||
declare i32 @__objc_personality_v0(i32, i64, i8*, i8*)
|
||||
declare i32 @__C_specific_handler(...)
|
||||
|
||||
declare void @bar()
|
||||
|
||||
@@ -231,3 +232,54 @@ lpad.d:
|
||||
; CHECK-NEXT: null
|
||||
; CHECK-NEXT: unreachable
|
||||
}
|
||||
|
||||
define void @foo_seh() {
|
||||
; CHECK-LABEL: @foo_seh(
|
||||
invoke void @bar()
|
||||
to label %cont.a unwind label %lpad.a
|
||||
cont.a:
|
||||
invoke void @bar()
|
||||
to label %cont.b unwind label %lpad.b
|
||||
cont.b:
|
||||
invoke void @bar()
|
||||
to label %cont.c unwind label %lpad.c
|
||||
cont.c:
|
||||
invoke void @bar()
|
||||
to label %cont.d unwind label %lpad.d
|
||||
cont.d:
|
||||
ret void
|
||||
|
||||
lpad.a:
|
||||
%a = landingpad { i8*, i32 } personality i32 (...)* @__C_specific_handler
|
||||
catch i32* null
|
||||
catch i32* @T1
|
||||
unreachable
|
||||
; CHECK: %a = landingpad
|
||||
; CHECK-NEXT: null
|
||||
; CHECK-NEXT: unreachable
|
||||
|
||||
lpad.b:
|
||||
%b = landingpad { i8*, i32 } personality i32 (...)* @__C_specific_handler
|
||||
filter [1 x i32*] zeroinitializer
|
||||
unreachable
|
||||
; CHECK: %b = landingpad
|
||||
; CHECK-NEXT: cleanup
|
||||
; CHECK-NEXT: unreachable
|
||||
|
||||
lpad.c:
|
||||
%c = landingpad { i8*, i32 } personality i32 (...)* @__C_specific_handler
|
||||
filter [2 x i32*] [i32* @T1, i32* null]
|
||||
unreachable
|
||||
; CHECK: %c = landingpad
|
||||
; CHECK-NEXT: cleanup
|
||||
; CHECK-NEXT: unreachable
|
||||
|
||||
lpad.d:
|
||||
%d = landingpad { i8*, i32 } personality i32 (...)* @__C_specific_handler
|
||||
cleanup
|
||||
catch i32* null
|
||||
unreachable
|
||||
; CHECK: %d = landingpad
|
||||
; CHECK-NEXT: null
|
||||
; CHECK-NEXT: unreachable
|
||||
}
|
||||
|
Reference in New Issue
Block a user