; 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!
        %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
                 cleanup
        resume { i8*, i32 } %exn
}

; 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
        %exn = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
                 cleanup
        ret i32 1
}

declare i32 @__gxx_personality_v0(...)
