mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
c8b1f095a3
The personality routine currently lives in the LandingPadInst. This isn't desirable because: - All LandingPadInsts in the same function must have the same personality routine. This means that each LandingPadInst beyond the first has an operand which produces no additional information. - There is ongoing work to introduce EH IR constructs other than LandingPadInst. Moving the personality routine off of any one particular Instruction and onto the parent function seems a lot better than have N different places a personality function can sneak onto an exceptional function. Differential Revision: http://reviews.llvm.org/D10429 llvm-svn: 239940
28 lines
1.1 KiB
LLVM
28 lines
1.1 KiB
LLVM
; RUN: opt < %s -indvars -disable-output
|
|
|
|
define void @_ZN5ArrayISt7complexIdEEC2ERK10dim_vector() personality i32 (...)* @__gxx_personality_v0 {
|
|
entry:
|
|
%tmp.7 = invoke i32 @_ZN5ArrayISt7complexIdEE8get_sizeERK10dim_vector( )
|
|
to label %invoke_cont.0 unwind label %cond_true.1 ; <i32> [#uses=2]
|
|
|
|
invoke_cont.0: ; preds = %entry
|
|
%tmp.4.i = bitcast i32 %tmp.7 to i32 ; <i32> [#uses=0]
|
|
%tmp.14.0.i5 = add i32 %tmp.7, -1 ; <i32> [#uses=1]
|
|
br label %no_exit.i
|
|
|
|
no_exit.i: ; preds = %no_exit.i, %invoke_cont.0
|
|
%tmp.14.0.i.0 = phi i32 [ %tmp.14.0.i, %no_exit.i ], [ %tmp.14.0.i5, %invoke_cont.0 ] ; <i32> [#uses=1]
|
|
%tmp.14.0.i = add i32 %tmp.14.0.i.0, -1 ; <i32> [#uses=1]
|
|
br label %no_exit.i
|
|
|
|
cond_true.1: ; preds = %entry
|
|
%exn = landingpad {i8*, i32}
|
|
cleanup
|
|
resume { i8*, i32 } %exn
|
|
}
|
|
|
|
declare i32 @__gxx_personality_v0(...)
|
|
|
|
declare i32 @_ZN5ArrayISt7complexIdEE8get_sizeERK10dim_vector()
|
|
|