; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=m68k < %s | FileCheck %s
; (Copied from test/CodeGen/X86/gcc_except_table.ll)
; Testing whether exception pointer register (d0) and exception selector
; register (d1) are correctly used by landing and EH pad, respectively.
@_ZTIi = external constant ptr
define i32 @foo() uwtable ssp personality ptr @__gxx_personality_v0 {
; CHECK-LABEL: foo:
; CHECK: .Lfunc_begin0:
; CHECK-NEXT: .cfi_startproc
; CHECK-NEXT: .cfi_personality 0, __gxx_personality_v0
; CHECK-NEXT: .cfi_lsda 0, .Lexception0
; CHECK-NEXT: ; %bb.0: ; %entry
; CHECK-NEXT: suba.l #4, %sp
; CHECK-NEXT: .cfi_def_cfa_offset -8
; CHECK-NEXT: .Ltmp0:
; CHECK-NEXT: jsr _Z1fv
; CHECK-NEXT: .Ltmp1:
; CHECK-NEXT: ; %bb.1: ; %try.cont
; CHECK-NEXT: moveq #0, %d0
; CHECK-NEXT: adda.l #4, %sp
; CHECK-NEXT: rts
; CHECK-NEXT: .LBB0_2: ; %lpad
; CHECK-NEXT: .Ltmp2:
; CHECK-NEXT: move.l %d0, (%sp)
; CHECK-NEXT: jsr _Unwind_Resume
entry:
invoke void @_Z1fv() optsize
to label %try.cont unwind label %lpad
lpad:
%0 = landingpad { ptr, i32 }
cleanup
catch ptr @_ZTIi
br label %eh.resume
try.cont:
ret i32 0
eh.resume:
resume { ptr, i32 } %0
}
declare void @_Z1fv() optsize
declare i32 @__gxx_personality_v0(...)