blob: f0ca5f425311c9e79f2315916ad1a417febbc009 [file] [log] [blame]
Dan Gohman3c7d3082009-09-11 18:01:28 +00001; RUN: opt < %s -lowerinvoke -disable-output -enable-correct-eh-support
Dan Gohmanf17a25c2007-07-18 16:29:46 +00002
Dan Gohmanf17a25c2007-07-18 16:29:46 +00003
Tanya Lattner97928372008-03-19 07:28:33 +00004define i32 @foo() {
5 invoke i32 @foo( )
6 to label %Ok unwind label %Crap ; <i32>:1 [#uses=0]
7Ok: ; preds = %0
8 invoke i32 @foo( )
9 to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0]
10Ok2: ; preds = %Ok
11 ret i32 2
12Crap: ; preds = %Ok, %0
13 ret i32 1
Dan Gohmanf17a25c2007-07-18 16:29:46 +000014}
15
Tanya Lattner97928372008-03-19 07:28:33 +000016define i32 @bar(i32 %blah) {
Dan Gohmanf17a25c2007-07-18 16:29:46 +000017 br label %doit
Tanya Lattner97928372008-03-19 07:28:33 +000018doit: ; preds = %0
19 ;; Value live across an unwind edge.
20 %B2 = add i32 %blah, 1 ; <i32> [#uses=1]
21 invoke i32 @foo( )
22 to label %Ok unwind label %Crap ; <i32>:1 [#uses=0]
23Ok: ; preds = %doit
24 invoke i32 @foo( )
25 to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0]
26Ok2: ; preds = %Ok
27 ret i32 2
28Crap: ; preds = %Ok, %doit
29 ret i32 %B2
Dan Gohmanf17a25c2007-07-18 16:29:46 +000030}