Bill Wendling | 547b6ed | 2010-08-04 21:56:30 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 |
| 2 | ; <rdar://problem/8264008> |
| 3 | |
| 4 | define linkonce_odr arm_apcscc void @func1() { |
| 5 | entry: |
| 6 | %save_filt.936 = alloca i32 ; <i32*> [#uses=2] |
| 7 | %save_eptr.935 = alloca i8* ; <i8**> [#uses=2] |
| 8 | %eh_exception = alloca i8* ; <i8**> [#uses=5] |
| 9 | %eh_selector = alloca i32 ; <i32*> [#uses=3] |
| 10 | %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] |
| 11 | call arm_apcscc void @func2() |
| 12 | br label %return |
| 13 | |
| 14 | bb: ; No predecessors! |
| 15 | %eh_select = load i32* %eh_selector ; <i32> [#uses=1] |
| 16 | store i32 %eh_select, i32* %save_filt.936, align 4 |
| 17 | %eh_value = load i8** %eh_exception ; <i8*> [#uses=1] |
| 18 | store i8* %eh_value, i8** %save_eptr.935, align 4 |
| 19 | invoke arm_apcscc void @func3() |
| 20 | to label %invcont unwind label %lpad |
| 21 | |
| 22 | invcont: ; preds = %bb |
| 23 | %tmp6 = load i8** %save_eptr.935, align 4 ; <i8*> [#uses=1] |
| 24 | store i8* %tmp6, i8** %eh_exception, align 4 |
| 25 | %tmp7 = load i32* %save_filt.936, align 4 ; <i32> [#uses=1] |
| 26 | store i32 %tmp7, i32* %eh_selector, align 4 |
| 27 | br label %Unwind |
| 28 | |
| 29 | bb12: ; preds = %ppad |
| 30 | call arm_apcscc void @_ZSt9terminatev() noreturn nounwind |
| 31 | unreachable |
| 32 | |
| 33 | return: ; preds = %entry |
| 34 | ret void |
| 35 | |
| 36 | lpad: ; preds = %bb |
Bill Wendling | 30ceba3 | 2011-11-08 00:09:27 +0000 | [diff] [blame^] | 37 | %eh_ptr = landingpad { i8*, i32 } personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*) |
| 38 | cleanup |
| 39 | %exn = extractvalue { i8*, i32 } %eh_ptr, 0 |
| 40 | store i8* %exn, i8** %eh_exception |
Bill Wendling | 547b6ed | 2010-08-04 21:56:30 +0000 | [diff] [blame] | 41 | %eh_ptr13 = load i8** %eh_exception ; <i8*> [#uses=1] |
Bill Wendling | 30ceba3 | 2011-11-08 00:09:27 +0000 | [diff] [blame^] | 42 | %eh_select14 = extractvalue { i8*, i32 } %eh_ptr, 1 |
Bill Wendling | 547b6ed | 2010-08-04 21:56:30 +0000 | [diff] [blame] | 43 | store i32 %eh_select14, i32* %eh_selector |
| 44 | br label %ppad |
| 45 | |
| 46 | ppad: |
| 47 | br label %bb12 |
| 48 | |
| 49 | Unwind: |
| 50 | %eh_ptr15 = load i8** %eh_exception |
| 51 | call arm_apcscc void @_Unwind_SjLj_Resume(i8* %eh_ptr15) |
| 52 | unreachable |
| 53 | } |
| 54 | |
| 55 | declare arm_apcscc void @func2() |
| 56 | |
| 57 | declare arm_apcscc void @_ZSt9terminatev() noreturn nounwind |
| 58 | |
Bill Wendling | 547b6ed | 2010-08-04 21:56:30 +0000 | [diff] [blame] | 59 | declare arm_apcscc void @_Unwind_SjLj_Resume(i8*) |
| 60 | |
| 61 | declare arm_apcscc void @func3() |
| 62 | |
| 63 | declare arm_apcscc i32 @__gxx_personality_sj0(...) |