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