1
1
; RUN: opt -safepoint-ir-verifier-print-only -verify-safepoint-ir -S %s 2>&1 | FileCheck %s
2
2
3
- define ptr addrspace (1 ) @test.not.ok.0 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
3
+ define ptr addrspace (1 ) @test.not.ok.0 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
4
4
; CHECK-LABEL: Verifying gc pointers in function: test.not.ok.0
5
5
bci_0:
6
- br i1 undef , label %left , label %right
6
+ br i1 %new_arg , label %left , label %right
7
7
8
8
left:
9
9
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 )
@@ -20,10 +20,10 @@ define ptr addrspace(1) @test.not.ok.0(ptr addrspace(1) %arg) gc "statepoint-exa
20
20
ret ptr addrspace (1 ) %val
21
21
}
22
22
23
- define ptr addrspace (1 ) @test.not.ok.1 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
23
+ define ptr addrspace (1 ) @test.not.ok.1 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
24
24
; CHECK-LABEL: Verifying gc pointers in function: test.not.ok.1
25
25
bci_0:
26
- br i1 undef , label %left , label %right
26
+ br i1 %new_arg , label %left , label %right
27
27
28
28
left:
29
29
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 )
@@ -40,10 +40,10 @@ define ptr addrspace(1) @test.not.ok.1(ptr addrspace(1) %arg) gc "statepoint-exa
40
40
ret ptr addrspace (1 ) %val
41
41
}
42
42
43
- define ptr addrspace (1 ) @test.ok.0 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
43
+ define ptr addrspace (1 ) @test.ok.0 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
44
44
; CHECK: No illegal uses found by SafepointIRVerifier in: test.ok.0
45
45
bci_0:
46
- br i1 undef , label %left , label %right
46
+ br i1 %new_arg , label %left , label %right
47
47
48
48
left:
49
49
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 )
@@ -57,10 +57,10 @@ define ptr addrspace(1) @test.ok.0(ptr addrspace(1) %arg) gc "statepoint-example
57
57
ret ptr addrspace (1 ) %val
58
58
}
59
59
60
- define ptr addrspace (1 ) @test.ok.1 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
60
+ define ptr addrspace (1 ) @test.ok.1 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
61
61
; CHECK: No illegal uses found by SafepointIRVerifier in: test.ok.1
62
62
bci_0:
63
- br i1 undef , label %left , label %right
63
+ br i1 %new_arg , label %left , label %right
64
64
65
65
left:
66
66
call void @not_statepoint ()
@@ -75,10 +75,10 @@ define ptr addrspace(1) @test.ok.1(ptr addrspace(1) %arg) gc "statepoint-example
75
75
}
76
76
77
77
; It should be allowed to compare poisoned ptr with null.
78
- define void @test.poisoned.cmp.ok (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
78
+ define void @test.poisoned.cmp.ok (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
79
79
; CHECK-LABEL: Verifying gc pointers in function: test.poisoned.cmp.ok
80
80
bci_0:
81
- br i1 undef , label %left , label %right
81
+ br i1 %new_arg , label %left , label %right
82
82
83
83
left:
84
84
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 ) ["gc-live" (ptr addrspace (1 ) %arg )]
@@ -97,10 +97,10 @@ define void @test.poisoned.cmp.ok(ptr addrspace(1) %arg) gc "statepoint-example"
97
97
}
98
98
99
99
; It is illegal to compare poisoned ptr and relocated.
100
- define void @test.poisoned.cmp.fail.0 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
100
+ define void @test.poisoned.cmp.fail.0 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
101
101
; CHECK-LABEL: Verifying gc pointers in function: test.poisoned.cmp.fail.0
102
102
bci_0:
103
- br i1 undef , label %left , label %right
103
+ br i1 %new_arg , label %left , label %right
104
104
105
105
left:
106
106
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 ) ["gc-live" (ptr addrspace (1 ) %arg )]
@@ -123,10 +123,10 @@ define void @test.poisoned.cmp.fail.0(ptr addrspace(1) %arg) gc "statepoint-exam
123
123
}
124
124
125
125
; It is illegal to compare poisoned ptr and unrelocated.
126
- define void @test.poisoned.cmp.fail.1 (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
126
+ define void @test.poisoned.cmp.fail.1 (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
127
127
; CHECK-LABEL: Verifying gc pointers in function: test.poisoned.cmp.fail.1
128
128
bci_0:
129
- br i1 undef , label %left , label %right
129
+ br i1 %new_arg , label %left , label %right
130
130
131
131
left:
132
132
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 ) ["gc-live" (ptr addrspace (1 ) %arg )]
@@ -148,10 +148,10 @@ define void @test.poisoned.cmp.fail.1(ptr addrspace(1) %arg) gc "statepoint-exam
148
148
}
149
149
150
150
; It should be allowed to compare unrelocated phi with unrelocated value.
151
- define void @test.unrelocated-phi.cmp.ok (ptr addrspace (1 ) %arg ) gc "statepoint-example" {
151
+ define void @test.unrelocated-phi.cmp.ok (ptr addrspace (1 ) %arg , i1 %new_arg ) gc "statepoint-example" {
152
152
; CHECK-LABEL: Verifying gc pointers in function: test.unrelocated-phi.cmp.ok
153
153
bci_0:
154
- br i1 undef , label %left , label %right
154
+ br i1 %new_arg , label %left , label %right
155
155
156
156
left:
157
157
%safepoint_token = call token (i64 , i32 , ptr , i32 , i32 , ...) @llvm.experimental.gc.statepoint.p0 (i64 0 , i32 0 , ptr elementtype(void ()) undef , i32 0 , i32 0 , i32 0 , i32 0 )
0 commit comments