| ; ModuleID = 'InvokeUnwind.ll' | |
| declare void @abort() | |
| define internal void @throw(i1 %ShouldThrow) { | |
| br i1 %ShouldThrow, label %Throw, label %NoThrow | |
| Throw: ; preds = %0 | |
| unwind | |
| NoThrow: ; preds = %0 | |
| ret void | |
| } | |
| define i32 @main() { | |
| invoke void @throw( i1 false ) | |
| to label %Cont unwind label %Abort | |
| Cont: ; preds = %0 | |
| invoke void @throw( i1 true ) | |
| to label %Abort unwind label %Exc | |
| Abort: ; preds = %Cont, %0 | |
| call void @abort( ) | |
| ret i32 1 | |
| Exc: ; preds = %Cont | |
| ret i32 0 | |
| } |