@@ -9,6 +9,28 @@ declare ptr addrspace(1) @"some_other_call"(ptr addrspace(1))
9
9
declare i32 @"personality_function" ()
10
10
11
11
define ptr addrspace (1 ) @test_basic (ptr addrspace (1 ) %obj ,
12
+ ; CHECK-LABEL: test_basic:
13
+ ; CHECK: # %bb.0: # %entry
14
+ ; CHECK-NEXT: subq $24, %rsp
15
+ ; CHECK-NEXT: .cfi_def_cfa_offset 32
16
+ ; CHECK-NEXT: movq %rdi, {{[0-9]+}}(%rsp)
17
+ ; CHECK-NEXT: movq %rsi, {{[0-9]+}}(%rsp)
18
+ ; CHECK-NEXT: .Ltmp0:
19
+ ; CHECK-NEXT: callq some_call@PLT
20
+ ; CHECK-NEXT: .Ltmp3:
21
+ ; CHECK-NEXT: .Ltmp1:
22
+ ; CHECK-NEXT: # %bb.1: # %invoke_safepoint_normal_dest
23
+ ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rax
24
+ ; CHECK-NEXT: addq $24, %rsp
25
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
26
+ ; CHECK-NEXT: retq
27
+ ; CHECK-NEXT: .LBB0_2: # %exceptional_return
28
+ ; CHECK-NEXT: .cfi_def_cfa_offset 32
29
+ ; CHECK-NEXT: .Ltmp2:
30
+ ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rax
31
+ ; CHECK-NEXT: addq $24, %rsp
32
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
33
+ ; CHECK-NEXT: retq
12
34
ptr addrspace (1 ) %obj1 )
13
35
gc "statepoint-example" personality ptr @"personality_function" {
14
36
entry:
@@ -37,6 +59,26 @@ exceptional_return:
37
59
; CHECK: .p2align 4
38
60
39
61
define ptr addrspace (1 ) @test_result (ptr addrspace (1 ) %obj ,
62
+ ; CHECK-LABEL: test_result:
63
+ ; CHECK: # %bb.0: # %entry
64
+ ; CHECK-NEXT: pushq %rax
65
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
66
+ ; CHECK-NEXT: movq %rdi, (%rsp)
67
+ ; CHECK-NEXT: .Ltmp4:
68
+ ; CHECK-NEXT: callq some_other_call@PLT
69
+ ; CHECK-NEXT: .Ltmp7:
70
+ ; CHECK-NEXT: .Ltmp5:
71
+ ; CHECK-NEXT: # %bb.1: # %normal_return
72
+ ; CHECK-NEXT: popq %rcx
73
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
74
+ ; CHECK-NEXT: retq
75
+ ; CHECK-NEXT: .LBB1_2: # %exceptional_return
76
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
77
+ ; CHECK-NEXT: .Ltmp6:
78
+ ; CHECK-NEXT: movq (%rsp), %rax
79
+ ; CHECK-NEXT: popq %rcx
80
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
81
+ ; CHECK-NEXT: retq
40
82
ptr addrspace (1 ) %obj1 )
41
83
gc "statepoint-example" personality ptr @personality_function {
42
84
entry:
@@ -60,6 +102,57 @@ exceptional_return:
60
102
; CHECK: .p2align 4
61
103
62
104
define ptr addrspace (1 ) @test_same_val (i1 %cond , ptr addrspace (1 ) %val1 , ptr addrspace (1 ) %val2 , ptr addrspace (1 ) %val3 )
105
+ ; CHECK-LABEL: test_same_val:
106
+ ; CHECK: # %bb.0: # %entry
107
+ ; CHECK-NEXT: pushq %rbx
108
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
109
+ ; CHECK-NEXT: subq $16, %rsp
110
+ ; CHECK-NEXT: .cfi_def_cfa_offset 32
111
+ ; CHECK-NEXT: .cfi_offset %rbx, -16
112
+ ; CHECK-NEXT: movl %edi, %ebx
113
+ ; CHECK-NEXT: testb $1, %bl
114
+ ; CHECK-NEXT: je .LBB2_3
115
+ ; CHECK-NEXT: # %bb.1: # %left
116
+ ; CHECK-NEXT: movq %rsi, (%rsp)
117
+ ; CHECK-NEXT: movq %rdx, {{[0-9]+}}(%rsp)
118
+ ; CHECK-NEXT: .Ltmp11:
119
+ ; CHECK-NEXT: movq %rsi, %rdi
120
+ ; CHECK-NEXT: callq some_call@PLT
121
+ ; CHECK-NEXT: .Ltmp14:
122
+ ; CHECK-NEXT: .Ltmp12:
123
+ ; CHECK-NEXT: # %bb.2: # %left.relocs
124
+ ; CHECK-NEXT: movq (%rsp), %rax
125
+ ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rcx
126
+ ; CHECK-NEXT: jmp .LBB2_5
127
+ ; CHECK-NEXT: .LBB2_3: # %right
128
+ ; CHECK-NEXT: movq %rdx, (%rsp)
129
+ ; CHECK-NEXT: movq %rcx, {{[0-9]+}}(%rsp)
130
+ ; CHECK-NEXT: .Ltmp8:
131
+ ; CHECK-NEXT: movq %rsi, %rdi
132
+ ; CHECK-NEXT: callq some_call@PLT
133
+ ; CHECK-NEXT: .Ltmp15:
134
+ ; CHECK-NEXT: .Ltmp9:
135
+ ; CHECK-NEXT: # %bb.4: # %right.relocs
136
+ ; CHECK-NEXT: movq (%rsp), %rcx
137
+ ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rax
138
+ ; CHECK-NEXT: .LBB2_5: # %normal_return
139
+ ; CHECK-NEXT: testb $1, %bl
140
+ ; CHECK-NEXT: cmoveq %rcx, %rax
141
+ ; CHECK-NEXT: .LBB2_6: # %normal_return
142
+ ; CHECK-NEXT: addq $16, %rsp
143
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
144
+ ; CHECK-NEXT: popq %rbx
145
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
146
+ ; CHECK-NEXT: retq
147
+ ; CHECK-NEXT: .LBB2_9: # %exceptional_return.right
148
+ ; CHECK-NEXT: .cfi_def_cfa_offset 32
149
+ ; CHECK-NEXT: .Ltmp10:
150
+ ; CHECK-NEXT: movq (%rsp), %rax
151
+ ; CHECK-NEXT: jmp .LBB2_6
152
+ ; CHECK-NEXT: .LBB2_7: # %exceptional_return.left
153
+ ; CHECK-NEXT: .Ltmp13:
154
+ ; CHECK-NEXT: movq (%rsp), %rax
155
+ ; CHECK-NEXT: jmp .LBB2_6
63
156
gc "statepoint-example" personality ptr @"personality_function" {
64
157
entry:
65
158
br i1 %cond , label %left , label %right
@@ -102,6 +195,23 @@ exceptional_return.right:
102
195
}
103
196
104
197
define ptr addrspace (1 ) @test_null_undef (ptr addrspace (1 ) %val1 )
198
+ ; CHECK-LABEL: test_null_undef:
199
+ ; CHECK: # %bb.0: # %entry
200
+ ; CHECK-NEXT: pushq %rax
201
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
202
+ ; CHECK-NEXT: .Ltmp16:
203
+ ; CHECK-NEXT: callq some_call@PLT
204
+ ; CHECK-NEXT: .Ltmp19:
205
+ ; CHECK-NEXT: .Ltmp17:
206
+ ; CHECK-NEXT: .LBB3_1: # %normal_return
207
+ ; CHECK-NEXT: xorl %eax, %eax
208
+ ; CHECK-NEXT: popq %rcx
209
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
210
+ ; CHECK-NEXT: retq
211
+ ; CHECK-NEXT: .LBB3_2: # %exceptional_return
212
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
213
+ ; CHECK-NEXT: .Ltmp18:
214
+ ; CHECK-NEXT: jmp .LBB3_1
105
215
gc "statepoint-example" personality ptr @"personality_function" {
106
216
entry:
107
217
%sp1 = invoke token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void (ptr addrspace (1 ))) @some_call , i32 1 , i32 0 , ptr addrspace (1 ) %val1 , i32 0 , i32 0 ) ["gc-live" (ptr addrspace (1 ) null , ptr addrspace (1 ) undef )]
@@ -121,6 +231,26 @@ exceptional_return:
121
231
}
122
232
123
233
define ptr addrspace (1 ) @test_alloca_and_const (ptr addrspace (1 ) %val1 )
234
+ ; CHECK-LABEL: test_alloca_and_const:
235
+ ; CHECK: # %bb.0: # %entry
236
+ ; CHECK-NEXT: pushq %rax
237
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
238
+ ; CHECK-NEXT: .Ltmp20:
239
+ ; CHECK-NEXT: callq some_call@PLT
240
+ ; CHECK-NEXT: .Ltmp23:
241
+ ; CHECK-NEXT: .Ltmp21:
242
+ ; CHECK-NEXT: # %bb.1: # %normal_return
243
+ ; CHECK-NEXT: leaq {{[0-9]+}}(%rsp), %rax
244
+ ; CHECK-NEXT: popq %rcx
245
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
246
+ ; CHECK-NEXT: retq
247
+ ; CHECK-NEXT: .LBB4_2: # %exceptional_return
248
+ ; CHECK-NEXT: .cfi_def_cfa_offset 16
249
+ ; CHECK-NEXT: .Ltmp22:
250
+ ; CHECK-NEXT: movl $15, %eax
251
+ ; CHECK-NEXT: popq %rcx
252
+ ; CHECK-NEXT: .cfi_def_cfa_offset 8
253
+ ; CHECK-NEXT: retq
124
254
gc "statepoint-example" personality ptr @"personality_function" {
125
255
entry:
126
256
%a = alloca i32
0 commit comments