xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/2010-08-04-EHCrash.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv7-apple-darwin10
2*9880d681SAndroid Build Coastguard Worker; <rdar://problem/8264008>
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine linkonce_odr arm_apcscc void @func1() personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker  %save_filt.936 = alloca i32                     ; <i32*> [#uses=2]
7*9880d681SAndroid Build Coastguard Worker  %save_eptr.935 = alloca i8*                     ; <i8**> [#uses=2]
8*9880d681SAndroid Build Coastguard Worker  %eh_exception = alloca i8*                      ; <i8**> [#uses=5]
9*9880d681SAndroid Build Coastguard Worker  %eh_selector = alloca i32                       ; <i32*> [#uses=3]
10*9880d681SAndroid Build Coastguard Worker  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
11*9880d681SAndroid Build Coastguard Worker  call arm_apcscc  void @func2()
12*9880d681SAndroid Build Coastguard Worker  br label %return
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerbb:                                               ; No predecessors!
15*9880d681SAndroid Build Coastguard Worker  %eh_select = load i32, i32* %eh_selector             ; <i32> [#uses=1]
16*9880d681SAndroid Build Coastguard Worker  store i32 %eh_select, i32* %save_filt.936, align 4
17*9880d681SAndroid Build Coastguard Worker  %eh_value = load i8*, i8** %eh_exception             ; <i8*> [#uses=1]
18*9880d681SAndroid Build Coastguard Worker  store i8* %eh_value, i8** %save_eptr.935, align 4
19*9880d681SAndroid Build Coastguard Worker  invoke arm_apcscc  void @func3()
20*9880d681SAndroid Build Coastguard Worker          to label %invcont unwind label %lpad
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerinvcont:                                          ; preds = %bb
23*9880d681SAndroid Build Coastguard Worker  %tmp6 = load i8*, i8** %save_eptr.935, align 4          ; <i8*> [#uses=1]
24*9880d681SAndroid Build Coastguard Worker  store i8* %tmp6, i8** %eh_exception, align 4
25*9880d681SAndroid Build Coastguard Worker  %tmp7 = load i32, i32* %save_filt.936, align 4          ; <i32> [#uses=1]
26*9880d681SAndroid Build Coastguard Worker  store i32 %tmp7, i32* %eh_selector, align 4
27*9880d681SAndroid Build Coastguard Worker  br label %Unwind
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerbb12:                                             ; preds = %ppad
30*9880d681SAndroid Build Coastguard Worker  call arm_apcscc  void @_ZSt9terminatev() noreturn nounwind
31*9880d681SAndroid Build Coastguard Worker  unreachable
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Workerreturn:                                           ; preds = %entry
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerlpad:                                             ; preds = %bb
37*9880d681SAndroid Build Coastguard Worker  %eh_ptr = landingpad { i8*, i32 }
38*9880d681SAndroid Build Coastguard Worker              cleanup
39*9880d681SAndroid Build Coastguard Worker  %exn = extractvalue { i8*, i32 } %eh_ptr, 0
40*9880d681SAndroid Build Coastguard Worker  store i8* %exn, i8** %eh_exception
41*9880d681SAndroid Build Coastguard Worker  %eh_ptr13 = load i8*, i8** %eh_exception             ; <i8*> [#uses=1]
42*9880d681SAndroid Build Coastguard Worker  %eh_select14 = extractvalue { i8*, i32 } %eh_ptr, 1
43*9880d681SAndroid Build Coastguard Worker  store i32 %eh_select14, i32* %eh_selector
44*9880d681SAndroid Build Coastguard Worker  br label %ppad
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Workerppad:
47*9880d681SAndroid Build Coastguard Worker  br label %bb12
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard WorkerUnwind:
50*9880d681SAndroid Build Coastguard Worker  %eh_ptr15 = load i8*, i8** %eh_exception
51*9880d681SAndroid Build Coastguard Worker  call arm_apcscc  void @_Unwind_SjLj_Resume(i8* %eh_ptr15)
52*9880d681SAndroid Build Coastguard Worker  unreachable
53*9880d681SAndroid Build Coastguard Worker}
54*9880d681SAndroid Build Coastguard Worker
55*9880d681SAndroid Build Coastguard Workerdeclare arm_apcscc void @func2()
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdeclare arm_apcscc void @_ZSt9terminatev() noreturn nounwind
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Workerdeclare arm_apcscc void @_Unwind_SjLj_Resume(i8*)
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdeclare arm_apcscc void @func3()
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Workerdeclare arm_apcscc i32 @__gxx_personality_sj0(...)
64