1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-01 08:23:21 +01:00
llvm-mirror/test/Transforms/Inline/invoke_test-3.ll
Dan Gohman 205b641954 Change tests from "opt %s" to "opt < %s" so that opt doesn't see the
input filename so that opt doesn't print the input filename in the
output so that grep lines in the tests don't unintentionally match
strings in the input filename.

llvm-svn: 81537
2009-09-11 18:01:28 +00:00

33 lines
870 B
LLVM

; Test that any rethrown exceptions in an inlined function are automatically
; turned into branches to the invoke destination.
; RUN: opt < %s -inline -S | not grep unwind$
declare void @might_throw()
define internal i32 @callee() {
invoke void @might_throw( )
to label %cont unwind label %exc
cont: ; preds = %0
ret i32 0
exc: ; preds = %0a
; This just rethrows the exception!
unwind
}
; caller returns true if might_throw throws an exception... which gets
; propagated by callee.
define i32 @caller() {
%X = invoke i32 @callee( )
to label %cont unwind label %Handler ; <i32> [#uses=1]
cont: ; preds = %0
ret i32 %X
Handler: ; preds = %0
; This consumes an exception thrown by might_throw
ret i32 1
}