@@ -6,12 +6,10 @@ declare i32 @get_i32()
6
6
7
7
define void @range_attribute (i32 range(i32 0 , 10 ) %v ) {
8
8
; CHECK-LABEL: @range_attribute(
9
- ; CHECK-NEXT: [[C1:%.*]] = icmp ult i32 [[V:%.*]], 10
10
- ; CHECK-NEXT: call void @use(i1 [[C1]])
11
- ; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[V]], 9
9
+ ; CHECK-NEXT: call void @use(i1 true)
10
+ ; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[V:%.*]], 9
12
11
; CHECK-NEXT: call void @use(i1 [[C2]])
13
- ; CHECK-NEXT: [[C3:%.*]] = icmp ugt i32 [[V]], 9
14
- ; CHECK-NEXT: call void @use(i1 [[C3]])
12
+ ; CHECK-NEXT: call void @use(i1 false)
15
13
; CHECK-NEXT: [[C4:%.*]] = icmp ugt i32 [[V]], 8
16
14
; CHECK-NEXT: call void @use(i1 [[C4]])
17
15
; CHECK-NEXT: ret void
@@ -29,20 +27,18 @@ define void @range_attribute(i32 range(i32 0, 10) %v) {
29
27
30
28
define i32 @range_attribute_single (i32 range(i32 0 , 1 ) %v ) {
31
29
; CHECK-LABEL: @range_attribute_single(
32
- ; CHECK-NEXT: ret i32 [[V:%.*]]
30
+ ; CHECK-NEXT: ret i32 0
33
31
;
34
32
ret i32 %v
35
33
}
36
34
37
35
define void @call_range_attribute () {
38
36
; CHECK-LABEL: @call_range_attribute(
39
37
; CHECK-NEXT: [[V:%.*]] = call range(i32 0, 10) i32 @get_i32()
40
- ; CHECK-NEXT: [[C1:%.*]] = icmp ult i32 [[V]], 10
41
- ; CHECK-NEXT: call void @use(i1 [[C1]])
38
+ ; CHECK-NEXT: call void @use(i1 true)
42
39
; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[V]], 9
43
40
; CHECK-NEXT: call void @use(i1 [[C2]])
44
- ; CHECK-NEXT: [[C3:%.*]] = icmp ugt i32 [[V]], 9
45
- ; CHECK-NEXT: call void @use(i1 [[C3]])
41
+ ; CHECK-NEXT: call void @use(i1 false)
46
42
; CHECK-NEXT: [[C4:%.*]] = icmp ugt i32 [[V]], 8
47
43
; CHECK-NEXT: call void @use(i1 [[C4]])
48
44
; CHECK-NEXT: ret void
@@ -65,12 +61,10 @@ declare range(i32 0, 10) i32 @get_i32_in_range()
65
61
define void @call_range_result () {
66
62
; CHECK-LABEL: @call_range_result(
67
63
; CHECK-NEXT: [[V:%.*]] = call i32 @get_i32_in_range()
68
- ; CHECK-NEXT: [[C1:%.*]] = icmp ult i32 [[V]], 10
69
- ; CHECK-NEXT: call void @use(i1 [[C1]])
64
+ ; CHECK-NEXT: call void @use(i1 true)
70
65
; CHECK-NEXT: [[C2:%.*]] = icmp ult i32 [[V]], 9
71
66
; CHECK-NEXT: call void @use(i1 [[C2]])
72
- ; CHECK-NEXT: [[C3:%.*]] = icmp ugt i32 [[V]], 9
73
- ; CHECK-NEXT: call void @use(i1 [[C3]])
67
+ ; CHECK-NEXT: call void @use(i1 false)
74
68
; CHECK-NEXT: [[C4:%.*]] = icmp ugt i32 [[V]], 8
75
69
; CHECK-NEXT: call void @use(i1 [[C4]])
76
70
; CHECK-NEXT: ret void
@@ -89,8 +83,7 @@ define void @call_range_result() {
89
83
90
84
define internal i1 @ip_cmp_range_attribute (i32 %v ) {
91
85
; CHECK-LABEL: @ip_cmp_range_attribute(
92
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[V:%.*]], 10
93
- ; CHECK-NEXT: ret i1 [[C]]
86
+ ; CHECK-NEXT: ret i1 undef
94
87
;
95
88
%c = icmp ult i32 %v , 10
96
89
ret i1 %c
@@ -99,16 +92,15 @@ define internal i1 @ip_cmp_range_attribute(i32 %v) {
99
92
define i1 @ip_range_attribute (i32 range(i32 0 , 10 ) %v ) {
100
93
; CHECK-LABEL: @ip_range_attribute(
101
94
; CHECK-NEXT: [[C:%.*]] = call i1 @ip_cmp_range_attribute(i32 [[V:%.*]])
102
- ; CHECK-NEXT: ret i1 [[C]]
95
+ ; CHECK-NEXT: ret i1 true
103
96
;
104
97
%c = call i1 @ip_cmp_range_attribute (i32 %v )
105
98
ret i1 %c
106
99
}
107
100
108
101
define internal i1 @ip_cmp_range_call (i32 %v ) {
109
102
; CHECK-LABEL: @ip_cmp_range_call(
110
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[V:%.*]], 10
111
- ; CHECK-NEXT: ret i1 [[C]]
103
+ ; CHECK-NEXT: ret i1 undef
112
104
;
113
105
%c = icmp ult i32 %v , 10
114
106
ret i1 %c
@@ -118,7 +110,7 @@ define i1 @ip_range_call() {
118
110
; CHECK-LABEL: @ip_range_call(
119
111
; CHECK-NEXT: [[V:%.*]] = call range(i32 0, 10) i32 @get_i32()
120
112
; CHECK-NEXT: [[C:%.*]] = call i1 @ip_cmp_range_call(i32 [[V]])
121
- ; CHECK-NEXT: ret i1 [[C]]
113
+ ; CHECK-NEXT: ret i1 true
122
114
;
123
115
%v = call range(i32 0 , 10 ) i32 @get_i32 ()
124
116
%c = call i1 @ip_cmp_range_call (i32 %v )
@@ -127,8 +119,7 @@ define i1 @ip_range_call() {
127
119
128
120
define internal i1 @ip_cmp_range_result (i32 %v ) {
129
121
; CHECK-LABEL: @ip_cmp_range_result(
130
- ; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[V:%.*]], 10
131
- ; CHECK-NEXT: ret i1 [[C]]
122
+ ; CHECK-NEXT: ret i1 undef
132
123
;
133
124
%c = icmp ult i32 %v , 10
134
125
ret i1 %c
@@ -138,7 +129,7 @@ define i1 @ip_range_result() {
138
129
; CHECK-LABEL: @ip_range_result(
139
130
; CHECK-NEXT: [[V:%.*]] = call range(i32 0, 10) i32 @get_i32()
140
131
; CHECK-NEXT: [[C:%.*]] = call i1 @ip_cmp_range_result(i32 [[V]])
141
- ; CHECK-NEXT: ret i1 [[C]]
132
+ ; CHECK-NEXT: ret i1 true
142
133
;
143
134
%v = call range(i32 0 , 10 ) i32 @get_i32 ()
144
135
%c = call i1 @ip_cmp_range_result (i32 %v )
0 commit comments