Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cd5744b

Browse files
author
git apple-llvm automerger
committed
Merge commit '1aedf949e0f6' from llvm.org/main into next
2 parents f9f68c6 + 1aedf94 commit cd5744b

File tree

1 file changed

+172
-48
lines changed

1 file changed

+172
-48
lines changed

llvm/test/CodeGen/X86/indirect-branch-tracking-eh2.ll

+172-48
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,183 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -mtriple x86_64-unknown-unknown -exception-model sjlj -verify-machineinstrs=0 -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s --check-prefix=NUM
23
; RUN: llc -mtriple x86_64-unknown-unknown -exception-model sjlj -verify-machineinstrs=0 -simplifycfg-require-and-preserve-domtree=1 < %s | FileCheck %s --check-prefix=SJLJ
34

4-
; NUM-COUNT-3: endbr64
5-
6-
;SJLJ: main: # @main
7-
;SJLJ-NEXT: .Lfunc_begin0:
8-
;SJLJ-NEXT: # %bb.0: # %entry
9-
;SJLJ-NEXT: endbr64
10-
;SJLJ-NEXT: pushq %rbp
11-
;SJLJ: callq _Unwind_SjLj_Register
12-
;SJLJ-NEXT: .Ltmp0:
13-
;SJLJ-NEXT: callq _Z3foov
14-
;SJLJ-NEXT: .Ltmp1:
15-
;SJLJ-NEXT: # %bb.1: # %invoke.cont
16-
;SJLJ-NEXT: movl
17-
;SJLJ-NEXT: .LBB0_7: # %return
18-
;SJLJ: callq _Unwind_SjLj_Unregister
19-
;SJLJ: retq
20-
;SJLJ-NEXT: .LBB0_9:
21-
;SJLJ-NEXT: endbr64
22-
;SJLJ-NEXT: movl
23-
;SJLJ-NEXT: cmpl
24-
;SJLJ-NEXT: jb .LBB0_10
25-
;SJLJ-NEXT: # %bb.11:
26-
;SJLJ-NEXT: ud2
27-
;SJLJ-NEXT: .LBB0_10:
28-
;SJLJ-NEXT: leaq .LJTI0_0(%rip), %rcx
29-
;SJLJ-NEXT: jmpq *(%rcx,%rax,8)
30-
;SJLJ-NEXT: .LBB0_2: # %lpad
31-
;SJLJ-NEXT: .Ltmp2:
32-
;SJLJ-NEXT: endbr64
33-
;SJLJ: jne .LBB0_4
34-
;SJLJ-NEXT: # %bb.3: # %catch3
35-
;SJLJ: callq __cxa_begin_catch
36-
;SJLJ: jmp .LBB0_6
37-
;SJLJ-NEXT: .LBB0_4: # %catch.fallthrough
38-
;SJLJ-NEXT: cmpl
39-
;SJLJ-NEXT: jne .LBB0_8
40-
;SJLJ-NEXT: # %bb.5: # %catch
41-
;SJLJ: callq __cxa_begin_catch
42-
;SJLJ: cmpb
43-
;SJLJ-NEXT: .LBB0_6: # %return
44-
;SJLJ: callq __cxa_end_catch
45-
;SJLJ-NEXT: jmp .LBB0_7
46-
;SJLJ-NEXT: .LBB0_8: # %eh.resume
47-
;SJLJ-NEXT: movl
48-
;SJLJ-NEXT: .Lfunc_end0:
49-
;SJLJ: .LJTI0_0:
50-
;SJLJ-NEXT: .quad .LBB0_2
51-
525
@_ZTIi = external dso_local constant ptr
536
@_ZTIc = external dso_local constant ptr
547

558
; Function Attrs: noinline norecurse optnone uwtable
569
define dso_local i32 @main() #0 personality ptr @__gxx_personality_sj0 {
10+
; NUM-LABEL: main:
11+
; NUM: # %bb.0: # %entry
12+
; NUM-NEXT: endbr64
13+
; NUM-NEXT: pushq %rbp
14+
; NUM-NEXT: movq %rsp, %rbp
15+
; NUM-NEXT: pushq %r15
16+
; NUM-NEXT: pushq %r14
17+
; NUM-NEXT: pushq %r13
18+
; NUM-NEXT: pushq %r12
19+
; NUM-NEXT: pushq %rbx
20+
; NUM-NEXT: subq $120, %rsp
21+
; NUM-NEXT: movl $0, -44(%rbp)
22+
; NUM-NEXT: movq $__gxx_personality_sj0, -120(%rbp)
23+
; NUM-NEXT: movq $GCC_except_table0, -112(%rbp)
24+
; NUM-NEXT: movq %rbp, -104(%rbp)
25+
; NUM-NEXT: movq %rsp, -88(%rbp)
26+
; NUM-NEXT: movq $.LBB0_9, -96(%rbp)
27+
; NUM-NEXT: movl $1, -144(%rbp)
28+
; NUM-NEXT: leaq -152(%rbp), %rdi
29+
; NUM-NEXT: callq _Unwind_SjLj_Register@PLT
30+
; NUM-NEXT: .Ltmp0:
31+
; NUM-NEXT: callq _Z3foov
32+
; NUM-NEXT: .Ltmp1:
33+
; NUM-NEXT: # %bb.1: # %invoke.cont
34+
; NUM-NEXT: movl $1, -44(%rbp)
35+
; NUM-NEXT: .LBB0_7: # %return
36+
; NUM-NEXT: movl -44(%rbp), %ebx
37+
; NUM-NEXT: leaq -152(%rbp), %rdi
38+
; NUM-NEXT: callq _Unwind_SjLj_Unregister@PLT
39+
; NUM-NEXT: movl %ebx, %eax
40+
; NUM-NEXT: addq $120, %rsp
41+
; NUM-NEXT: popq %rbx
42+
; NUM-NEXT: popq %r12
43+
; NUM-NEXT: popq %r13
44+
; NUM-NEXT: popq %r14
45+
; NUM-NEXT: popq %r15
46+
; NUM-NEXT: popq %rbp
47+
; NUM-NEXT: retq
48+
; NUM-NEXT: .LBB0_9:
49+
; NUM-NEXT: endbr64
50+
; NUM-NEXT: movl -144(%rbp), %eax
51+
; NUM-NEXT: cmpl $1, %eax
52+
; NUM-NEXT: jb .LBB0_10
53+
; NUM-NEXT: # %bb.11:
54+
; NUM-NEXT: ud2
55+
; NUM-NEXT: .LBB0_10:
56+
; NUM-NEXT: leaq .LJTI0_0(%rip), %rcx
57+
; NUM-NEXT: jmpq *(%rcx,%rax,8)
58+
; NUM-NEXT: .LBB0_2: # %lpad
59+
; NUM-NEXT: .Ltmp2:
60+
; NUM-NEXT: endbr64
61+
; NUM-NEXT: movl -140(%rbp), %ecx
62+
; NUM-NEXT: movl -136(%rbp), %eax
63+
; NUM-NEXT: movq %rcx, -56(%rbp)
64+
; NUM-NEXT: movl %eax, -64(%rbp)
65+
; NUM-NEXT: cmpl $2, %eax
66+
; NUM-NEXT: jne .LBB0_4
67+
; NUM-NEXT: # %bb.3: # %catch3
68+
; NUM-NEXT: movq -56(%rbp), %rdi
69+
; NUM-NEXT: movl $-1, -144(%rbp)
70+
; NUM-NEXT: callq __cxa_begin_catch
71+
; NUM-NEXT: movl (%rax), %eax
72+
; NUM-NEXT: movl %eax, -60(%rbp)
73+
; NUM-NEXT: xorl %ecx, %ecx
74+
; NUM-NEXT: cmpl $5, %eax
75+
; NUM-NEXT: jmp .LBB0_6
76+
; NUM-NEXT: .LBB0_4: # %catch.fallthrough
77+
; NUM-NEXT: cmpl $1, %eax
78+
; NUM-NEXT: jne .LBB0_8
79+
; NUM-NEXT: # %bb.5: # %catch
80+
; NUM-NEXT: movq -56(%rbp), %rdi
81+
; NUM-NEXT: movl $-1, -144(%rbp)
82+
; NUM-NEXT: callq __cxa_begin_catch
83+
; NUM-NEXT: movzbl (%rax), %eax
84+
; NUM-NEXT: movb %al, -45(%rbp)
85+
; NUM-NEXT: xorl %ecx, %ecx
86+
; NUM-NEXT: cmpb $3, %al
87+
; NUM-NEXT: .LBB0_6: # %return
88+
; NUM-NEXT: setne %cl
89+
; NUM-NEXT: movl %ecx, -44(%rbp)
90+
; NUM-NEXT: movl $-1, -144(%rbp)
91+
; NUM-NEXT: callq __cxa_end_catch
92+
; NUM-NEXT: jmp .LBB0_7
93+
; NUM-NEXT: .LBB0_8: # %eh.resume
94+
; NUM-NEXT: movl $-1, -144(%rbp)
95+
;
96+
; SJLJ-LABEL: main:
97+
; SJLJ: # %bb.0: # %entry
98+
; SJLJ-NEXT: endbr64
99+
; SJLJ-NEXT: pushq %rbp
100+
; SJLJ-NEXT: movq %rsp, %rbp
101+
; SJLJ-NEXT: pushq %r15
102+
; SJLJ-NEXT: pushq %r14
103+
; SJLJ-NEXT: pushq %r13
104+
; SJLJ-NEXT: pushq %r12
105+
; SJLJ-NEXT: pushq %rbx
106+
; SJLJ-NEXT: subq $120, %rsp
107+
; SJLJ-NEXT: movl $0, -44(%rbp)
108+
; SJLJ-NEXT: movq $__gxx_personality_sj0, -120(%rbp)
109+
; SJLJ-NEXT: movq $GCC_except_table0, -112(%rbp)
110+
; SJLJ-NEXT: movq %rbp, -104(%rbp)
111+
; SJLJ-NEXT: movq %rsp, -88(%rbp)
112+
; SJLJ-NEXT: movq $.LBB0_9, -96(%rbp)
113+
; SJLJ-NEXT: movl $1, -144(%rbp)
114+
; SJLJ-NEXT: leaq -152(%rbp), %rdi
115+
; SJLJ-NEXT: callq _Unwind_SjLj_Register@PLT
116+
; SJLJ-NEXT: .Ltmp0:
117+
; SJLJ-NEXT: callq _Z3foov
118+
; SJLJ-NEXT: .Ltmp1:
119+
; SJLJ-NEXT: # %bb.1: # %invoke.cont
120+
; SJLJ-NEXT: movl $1, -44(%rbp)
121+
; SJLJ-NEXT: .LBB0_7: # %return
122+
; SJLJ-NEXT: movl -44(%rbp), %ebx
123+
; SJLJ-NEXT: leaq -152(%rbp), %rdi
124+
; SJLJ-NEXT: callq _Unwind_SjLj_Unregister@PLT
125+
; SJLJ-NEXT: movl %ebx, %eax
126+
; SJLJ-NEXT: addq $120, %rsp
127+
; SJLJ-NEXT: popq %rbx
128+
; SJLJ-NEXT: popq %r12
129+
; SJLJ-NEXT: popq %r13
130+
; SJLJ-NEXT: popq %r14
131+
; SJLJ-NEXT: popq %r15
132+
; SJLJ-NEXT: popq %rbp
133+
; SJLJ-NEXT: retq
134+
; SJLJ-NEXT: .LBB0_9:
135+
; SJLJ-NEXT: endbr64
136+
; SJLJ-NEXT: movl -144(%rbp), %eax
137+
; SJLJ-NEXT: cmpl $1, %eax
138+
; SJLJ-NEXT: jb .LBB0_10
139+
; SJLJ-NEXT: # %bb.11:
140+
; SJLJ-NEXT: ud2
141+
; SJLJ-NEXT: .LBB0_10:
142+
; SJLJ-NEXT: leaq .LJTI0_0(%rip), %rcx
143+
; SJLJ-NEXT: jmpq *(%rcx,%rax,8)
144+
; SJLJ-NEXT: .LBB0_2: # %lpad
145+
; SJLJ-NEXT: .Ltmp2:
146+
; SJLJ-NEXT: endbr64
147+
; SJLJ-NEXT: movl -140(%rbp), %ecx
148+
; SJLJ-NEXT: movl -136(%rbp), %eax
149+
; SJLJ-NEXT: movq %rcx, -56(%rbp)
150+
; SJLJ-NEXT: movl %eax, -64(%rbp)
151+
; SJLJ-NEXT: cmpl $2, %eax
152+
; SJLJ-NEXT: jne .LBB0_4
153+
; SJLJ-NEXT: # %bb.3: # %catch3
154+
; SJLJ-NEXT: movq -56(%rbp), %rdi
155+
; SJLJ-NEXT: movl $-1, -144(%rbp)
156+
; SJLJ-NEXT: callq __cxa_begin_catch
157+
; SJLJ-NEXT: movl (%rax), %eax
158+
; SJLJ-NEXT: movl %eax, -60(%rbp)
159+
; SJLJ-NEXT: xorl %ecx, %ecx
160+
; SJLJ-NEXT: cmpl $5, %eax
161+
; SJLJ-NEXT: jmp .LBB0_6
162+
; SJLJ-NEXT: .LBB0_4: # %catch.fallthrough
163+
; SJLJ-NEXT: cmpl $1, %eax
164+
; SJLJ-NEXT: jne .LBB0_8
165+
; SJLJ-NEXT: # %bb.5: # %catch
166+
; SJLJ-NEXT: movq -56(%rbp), %rdi
167+
; SJLJ-NEXT: movl $-1, -144(%rbp)
168+
; SJLJ-NEXT: callq __cxa_begin_catch
169+
; SJLJ-NEXT: movzbl (%rax), %eax
170+
; SJLJ-NEXT: movb %al, -45(%rbp)
171+
; SJLJ-NEXT: xorl %ecx, %ecx
172+
; SJLJ-NEXT: cmpb $3, %al
173+
; SJLJ-NEXT: .LBB0_6: # %return
174+
; SJLJ-NEXT: setne %cl
175+
; SJLJ-NEXT: movl %ecx, -44(%rbp)
176+
; SJLJ-NEXT: movl $-1, -144(%rbp)
177+
; SJLJ-NEXT: callq __cxa_end_catch
178+
; SJLJ-NEXT: jmp .LBB0_7
179+
; SJLJ-NEXT: .LBB0_8: # %eh.resume
180+
; SJLJ-NEXT: movl $-1, -144(%rbp)
57181
entry:
58182
%retval = alloca i32, align 4
59183
%exn.slot = alloca ptr

0 commit comments

Comments
 (0)