Move the personality function from LandingPadInst to Function
[oota-llvm.git] / test / ExecutionEngine / OrcMCJIT / eh-sm-pic.ll
1 ; RUN: %lli -jit-kind=orc-mcjit -relocation-model=pic -code-model=small %s
2 ; XFAIL: cygwin, win32, mingw, mips-, mipsel-, i686, i386, darwin, aarch64, arm, asan, msan
3 declare i8* @__cxa_allocate_exception(i64)
4 declare void @__cxa_throw(i8*, i8*, i8*)
5 declare i32 @__gxx_personality_v0(...)
6 declare void @__cxa_end_catch()
7 declare i8* @__cxa_begin_catch(i8*)
8
9 @_ZTIi = external constant i8*
10
11 define void @throwException() {
12   %exception = tail call i8* @__cxa_allocate_exception(i64 4)
13   call void @__cxa_throw(i8* %exception, i8* bitcast (i8** @_ZTIi to i8*), i8* null)
14   unreachable
15 }
16
17 define i32 @main() personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) {
18 entry:
19   invoke void @throwException()
20           to label %try.cont unwind label %lpad
21
22 lpad:
23   %p = landingpad { i8*, i32 }
24           catch i8* bitcast (i8** @_ZTIi to i8*)
25   %e = extractvalue { i8*, i32 } %p, 0
26   call i8* @__cxa_begin_catch(i8* %e)
27   call void @__cxa_end_catch()
28   br label %try.cont
29
30 try.cont:
31   ret i32 0
32 }