1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00

Update some EH tests that were violating the new EH model.

The landingpad instruction needs to be the first non-PHI instruction in the
unwind destination block.

llvm-svn: 177650
This commit is contained in:
Bill Wendling 2013-03-21 18:30:10 +00:00
parent 8613f86d1c
commit e20714f292
3 changed files with 16 additions and 6 deletions

View File

@ -1,7 +1,5 @@
; rdar://7879828
; RUN: opt -inline -argpromotion < %s ; RUN: opt -inline -argpromotion < %s
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" ; rdar://7879828
target triple = "x86_64-apple-darwin10.0.0"
define void @foo() { define void @foo() {
invoke void @foo2() invoke void @foo2()
@ -11,6 +9,8 @@ if.end432:
unreachable unreachable
for.end520: for.end520:
%exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
cleanup
unreachable unreachable
} }
@ -57,3 +57,5 @@ init:
%4 = call i32 @"clay_assign(Chain, Chain)"(%0* %3, %0* %1) %4 = call i32 @"clay_assign(Chain, Chain)"(%0* %3, %0* %1)
ret i32 0 ret i32 0
} }
declare i32 @__gxx_personality_v0(...)

View File

@ -3,10 +3,15 @@
define i32 @main() { define i32 @main() {
entry: entry:
invoke void @__main( ) invoke void @__main( )
to label %LongJmpBlkPre unwind label %LongJmpBlkPre to label %LongJmpBlkPost unwind label %LongJmpBlkPre
LongJmpBlkPre: ; preds = %entry, %entry LongJmpBlkPost:
ret i32 0
LongJmpBlkPre:
%i.3 = phi i32 [ 0, %entry ], [ 0, %entry ] ; <i32> [#uses=0] %i.3 = phi i32 [ 0, %entry ], [ 0, %entry ] ; <i32> [#uses=0]
%exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
cleanup
ret i32 0 ret i32 0
} }
@ -14,3 +19,4 @@ define void @__main() {
ret void ret void
} }
declare i32 @__gxx_personality_v0(...)

View File

@ -13,6 +13,8 @@ LJDecisionBB: ; preds = %else
br label %else br label %else
RethrowExcept: ; preds = %entry RethrowExcept: ; preds = %entry
%exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
cleanup
ret i32 0 ret i32 0
} }
@ -20,4 +22,4 @@ define void @__main() {
ret void ret void
} }
declare i32 @__gxx_personality_v0(...)