| ; 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 |
| } |