; RUN: llc < %s -mtriple=thumbv7-apple-darwin10
; <rdar://problem/8264008>

define linkonce_odr arm_apcscc void @func1() {
entry:
  %save_filt.936 = alloca i32                     ; <i32*> [#uses=2]
  %save_eptr.935 = alloca i8*                     ; <i8**> [#uses=2]
  %eh_exception = alloca i8*                      ; <i8**> [#uses=5]
  %eh_selector = alloca i32                       ; <i32*> [#uses=3]
  %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
  call arm_apcscc  void @func2()
  br label %return

bb:                                               ; No predecessors!
  %eh_select = load i32* %eh_selector             ; <i32> [#uses=1]
  store i32 %eh_select, i32* %save_filt.936, align 4
  %eh_value = load i8** %eh_exception             ; <i8*> [#uses=1]
  store i8* %eh_value, i8** %save_eptr.935, align 4
  invoke arm_apcscc  void @func3()
          to label %invcont unwind label %lpad

invcont:                                          ; preds = %bb
  %tmp6 = load i8** %save_eptr.935, align 4          ; <i8*> [#uses=1]
  store i8* %tmp6, i8** %eh_exception, align 4
  %tmp7 = load i32* %save_filt.936, align 4          ; <i32> [#uses=1]
  store i32 %tmp7, i32* %eh_selector, align 4
  br label %Unwind

bb12:                                             ; preds = %ppad
  call arm_apcscc  void @_ZSt9terminatev() noreturn nounwind
  unreachable

return:                                           ; preds = %entry
  ret void

lpad:                                             ; preds = %bb
  %eh_ptr = call i8* @llvm.eh.exception()         ; <i8*> [#uses=1]
  store i8* %eh_ptr, i8** %eh_exception
  %eh_ptr13 = load i8** %eh_exception             ; <i8*> [#uses=1]
  %eh_select14 = call i32 (i8*, i8*, ...)* @llvm.eh.selector(i8* %eh_ptr13, i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*), i32 1)
  store i32 %eh_select14, i32* %eh_selector
  br label %ppad

ppad:
  br label %bb12

Unwind:
  %eh_ptr15 = load i8** %eh_exception
  call arm_apcscc  void @_Unwind_SjLj_Resume(i8* %eh_ptr15)
  unreachable
}

declare arm_apcscc void @func2()

declare arm_apcscc void @_ZSt9terminatev() noreturn nounwind

declare i8* @llvm.eh.exception() nounwind readonly

declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind

declare arm_apcscc void @_Unwind_SjLj_Resume(i8*)

declare arm_apcscc void @func3()

declare arm_apcscc i32 @__gxx_personality_sj0(...)
