; REQUIRES: cxx-shared-library ; RUN: %lli -jit-kind=mcjit -extra-module=%p/Inputs/multi-module-eh-b.ll %s ; XFAIL: arm, cygwin, windows-msvc, windows-gnu declare i8* @__cxa_allocate_exception(i64) declare void @__cxa_throw(i8*, i8*, i8*) declare i32 @__gxx_personality_v0(...) declare void @__cxa_end_catch() declare i8* @__cxa_begin_catch(i8*) @_ZTIi = external constant i8* declare i32 @FB() define void @throwException() { %exception = tail call i8* @__cxa_allocate_exception(i64 4) call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null) unreachable } define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: invoke void @throwException() to label %try.cont unwind label %lpad lpad: %p = landingpad { i8*, i32 } catch i8* bitcast (i8** @_ZTIi to i8*) %e = extractvalue { i8*, i32 } %p, 0 call i8* @__cxa_begin_catch(i8* %e) call void @__cxa_end_catch() br label %try.cont try.cont: %r = call i32 @FB( ) ret i32 %r }