-; Test that we can invoke a simple function, turning the calls in it into invoke
+; Test that we can inline a simple function, turning the calls in it into invoke
; instructions
; RUN: as < %s | opt -inline | dis | not grep 'call[^e]'
ret int 1
}
-; caller returns true if might_throw throws an exception...
+; caller returns true if might_throw throws an exception... callee cannot throw.
int %caller() {
%X = invoke int %callee() to label %cont
except label %UnreachableExceptionHandler
ret int 0
exc: ; This just rethrows the exception!
call void %llvm.exc.rethrow()
- ret int 0
+ ret int 123 ; DEAD!
}
-; caller returns true if might_throw throws an exception...
+; caller returns true if might_throw throws an exception... which gets
+; propagated by callee.
int %caller() {
%X = invoke int %callee() to label %cont
except label %Handler
ret int %X
Handler:
; This consumes an exception thrown by might_throw
- ret int -1
+ ret int 1
}