| ; RUN: opt < %s -lowerinvoke -disable-output -enable-correct-eh-support | |
| define i32 @foo() { | |
| invoke i32 @foo( ) | |
| to label %Ok unwind label %Crap ; <i32>:1 [#uses=0] | |
| Ok: ; preds = %0 | |
| invoke i32 @foo( ) | |
| to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0] | |
| Ok2: ; preds = %Ok | |
| ret i32 2 | |
| Crap: ; preds = %Ok, %0 | |
| ret i32 1 | |
| } | |
| define i32 @bar(i32 %blah) { | |
| br label %doit | |
| doit: ; preds = %0 | |
| ;; Value live across an unwind edge. | |
| %B2 = add i32 %blah, 1 ; <i32> [#uses=1] | |
| invoke i32 @foo( ) | |
| to label %Ok unwind label %Crap ; <i32>:1 [#uses=0] | |
| Ok: ; preds = %doit | |
| invoke i32 @foo( ) | |
| to label %Ok2 unwind label %Crap ; <i32>:2 [#uses=0] | |
| Ok2: ; preds = %Ok | |
| ret i32 2 | |
| Crap: ; preds = %Ok, %doit | |
| ret i32 %B2 | |
| } |