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

; caller returns true if might_throw throws an exception... which gets
; propagated by callee.
define i32 @caller() personality i32 (...)* @__gxx_personality_v0 {
        %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}
                 cleanup
        ret i32 1
}

declare i32 @__gxx_personality_v0(...)
