; RUN: llc < %s -mtriple=arm-apple-darwin9 -march=arm | FileCheck %s

; CHECK: L_LSDA_0:


%struct.A = type { i32* }

define void @"\01-[MyFunction Name:]"() {
entry:
  %save_filt.1 = alloca i32
  %save_eptr.0 = alloca i8*
  %a = alloca %struct.A
  %eh_exception = alloca i8*
  %eh_selector = alloca i32
  %"alloca point" = bitcast i32 0 to i32
  call void @_ZN1AC1Ev(%struct.A* %a)
  invoke void @_Z3barv()
          to label %invcont unwind label %lpad

invcont:                                          ; preds = %entry
  call void @_ZN1AD1Ev(%struct.A* %a) nounwind
  br label %return

bb:                                               ; preds = %ppad
  %eh_select = load i32* %eh_selector
  store i32 %eh_select, i32* %save_filt.1, align 4
  %eh_value = load i8** %eh_exception
  store i8* %eh_value, i8** %save_eptr.0, align 4
  call void @_ZN1AD1Ev(%struct.A* %a) nounwind
  %0 = load i8** %save_eptr.0, align 4
  store i8* %0, i8** %eh_exception, align 4
  %1 = load i32* %save_filt.1, align 4
  store i32 %1, i32* %eh_selector, align 4
  br label %Unwind

return:                                           ; preds = %invcont
  ret void

lpad:                                             ; preds = %entry
  %exn = landingpad {i8*, i32} personality i8* bitcast (i32 (...)* @__gxx_personality_sj0 to i8*)
           cleanup
  %eh_ptr = extractvalue {i8*, i32} %exn, 0
  store i8* %eh_ptr, i8** %eh_exception
  %eh_select2 = extractvalue {i8*, i32} %exn, 1
  store i32 %eh_select2, i32* %eh_selector
  br label %ppad

ppad:                                             ; preds = %lpad
  br label %bb

Unwind:                                           ; preds = %bb
  %eh_ptr3 = load i8** %eh_exception
  call void @_Unwind_SjLj_Resume(i8* %eh_ptr3)
  unreachable
}

define linkonce_odr void @_ZN1AC1Ev(%struct.A* %this) {
entry:
  %this_addr = alloca %struct.A*
  %"alloca point" = bitcast i32 0 to i32
  store %struct.A* %this, %struct.A** %this_addr
  %0 = call i8* @_Znwm(i32 4)
  %1 = bitcast i8* %0 to i32*
  %2 = load %struct.A** %this_addr, align 4
  %3 = getelementptr inbounds %struct.A* %2, i32 0, i32 0
  store i32* %1, i32** %3, align 4
  br label %return

return:                                           ; preds = %entry
  ret void
}

declare i8* @_Znwm(i32)

define linkonce_odr void @_ZN1AD1Ev(%struct.A* %this) nounwind {
entry:
  %this_addr = alloca %struct.A*
  %"alloca point" = bitcast i32 0 to i32
  store %struct.A* %this, %struct.A** %this_addr
  %0 = load %struct.A** %this_addr, align 4
  %1 = getelementptr inbounds %struct.A* %0, i32 0, i32 0
  %2 = load i32** %1, align 4
  %3 = bitcast i32* %2 to i8*
  call void @_ZdlPv(i8* %3) nounwind
  br label %bb

bb:                                               ; preds = %entry
  br label %return

return:                                           ; preds = %bb
  ret void
}

declare void @_ZdlPv(i8*) nounwind

declare void @_Z3barv()

declare i32 @llvm.eh.typeid.for(i8*) nounwind

declare i32 @__gxx_personality_sj0(...)

declare void @_Unwind_SjLj_Resume(i8*)
