Skip to content

Commit 46745b0

Browse files
committed
Add a test
1 parent 6aae104 commit 46745b0

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=x86_64 -exception-model=sjlj -o - %s | FileCheck %s
3+
4+
declare dso_local i32 @__gxx_personality_sj0(...)
5+
declare dso_local preserve_allcc void @foo(ptr)
6+
7+
define void @test() personality ptr @__gxx_personality_sj0 {
8+
; CHECK-LABEL: test:
9+
; CHECK: # %bb.0: # %entry
10+
; CHECK-NEXT: pushq %rbp
11+
; CHECK-NEXT: movq %rsp, %rbp
12+
; CHECK-NEXT: pushq %r15
13+
; CHECK-NEXT: pushq %r14
14+
; CHECK-NEXT: pushq %r13
15+
; CHECK-NEXT: pushq %r12
16+
; CHECK-NEXT: pushq %rbx
17+
; CHECK-NEXT: subq $104, %rsp
18+
; CHECK-NEXT: movq $__gxx_personality_sj0, -104(%rbp)
19+
; CHECK-NEXT: movq $GCC_except_table0, -96(%rbp)
20+
; CHECK-NEXT: movq %rbp, -88(%rbp)
21+
; CHECK-NEXT: movq %rsp, -72(%rbp)
22+
; CHECK-NEXT: movq $.LBB0_3, -80(%rbp)
23+
; CHECK-NEXT: leaq -136(%rbp), %rdi
24+
; CHECK-NEXT: callq _Unwind_SjLj_Register@PLT
25+
; CHECK-NEXT: leaq -44(%rbp), %rdi
26+
; CHECK-NEXT: leaq .LJTI0_0(%rip), %rax
27+
; CHECK-NEXT: .LBB0_1: # %while.cond
28+
; CHECK-NEXT: # =>This Inner Loop Header: Depth=1
29+
; CHECK-NEXT: movl $1, -128(%rbp)
30+
; CHECK-NEXT: .Ltmp0:
31+
; CHECK-NEXT: callq foo
32+
; CHECK-NEXT: .Ltmp1:
33+
; CHECK-NEXT: jmp .LBB0_2
34+
; CHECK-NEXT: .LBB0_3: # in Loop: Header=BB0_1 Depth=1
35+
; CHECK-NEXT: movl -128(%rbp), %ecx
36+
; CHECK-NEXT: cmpl $1, %ecx
37+
; CHECK-NEXT: jae .LBB0_5
38+
; CHECK-NEXT: # %bb.4: # in Loop: Header=BB0_1 Depth=1
39+
; CHECK-NEXT: jmpq *(%rax,%rcx,8)
40+
; CHECK-NEXT: .LBB0_6: # %lpad
41+
; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=1
42+
; CHECK-NEXT: .Ltmp2:
43+
; CHECK-NEXT: movl -124(%rbp), %ecx
44+
; CHECK-NEXT: movl -120(%rbp), %ecx
45+
; CHECK-NEXT: jmp .LBB0_1
46+
; CHECK-NEXT: .LBB0_2: # %while.end
47+
; CHECK-NEXT: leaq -136(%rbp), %rdi
48+
; CHECK-NEXT: callq _Unwind_SjLj_Unregister@PLT
49+
; CHECK-NEXT: addq $104, %rsp
50+
; CHECK-NEXT: popq %rbx
51+
; CHECK-NEXT: popq %r12
52+
; CHECK-NEXT: popq %r13
53+
; CHECK-NEXT: popq %r14
54+
; CHECK-NEXT: popq %r15
55+
; CHECK-NEXT: popq %rbp
56+
; CHECK-NEXT: retq
57+
; CHECK-NEXT: .LBB0_5:
58+
; CHECK-NEXT: ud2
59+
entry:
60+
%ptr = alloca i32, align 4
61+
br label %while.cond
62+
63+
while.cond:
64+
invoke preserve_allcc void @foo(ptr %ptr)
65+
to label %while.end unwind label %lpad
66+
67+
lpad:
68+
%lp = landingpad { ptr, i32 }
69+
catch ptr null
70+
br label %while.cond
71+
72+
while.end:
73+
ret void
74+
}

0 commit comments

Comments
 (0)