| 1234567891011121314151617181920212223242526272829303132333435363738 |
- ; 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(...)
|