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 |
| 37 | %eh_ptr = call i8* @llvm.eh.exception() ; <i8*> [#uses=1] |
| 38 | store i8* %eh_ptr, i8** %eh_exception |
| 39 | %eh_ptr13 = load i8** %eh_exception ; <i8*> [#uses=1] |
| 40 | %eh_select14 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*), i32 1) |
| 41 | store i32 %eh_select14, i32* %eh_selector |
| 42 | br label %ppad |
| 43 | |
| 44 | ppad: |
| 45 | br label %bb12 |
| 46 | |
| 47 | Unwind: |
| 48 | %eh_ptr15 = load i8** %eh_exception |
| 49 | call arm_apcscc void @_Unwind_SjLj_Resume(i8* %eh_ptr15) |
| 50 | unreachable |
| 51 | } |
| 52 | |
| 53 | declare arm_apcscc void @func2() |
| 54 | |
| 55 | declare arm_apcscc void @_ZSt9terminatev() noreturn nounwind |
| 56 | |
| 57 | declare i8* @llvm.eh.exception() nounwind readonly |
| 58 | |
| 59 | declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind |
| 60 | |
| 61 | declare arm_apcscc void @_Unwind_SjLj_Resume(i8*) |
| 62 | |
| 63 | declare arm_apcscc void @func3() |
| 64 | |
| 65 | declare arm_apcscc i32 @__gxx_personality_sj0(...) |