blob: f1c2e126d98f7ba64457a91e480a5bc0e9398d83 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
; 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(...)
|