@@ -159,6 +159,34 @@ define i16 addrspace(42)* @skipWithDifferentTypesDifferentAddrspace(i8* %a) {
159
159
ret i16 addrspace (42 )* %a3
160
160
}
161
161
162
+ define i1 @icmp1 (i8* %a ) {
163
+ ; CHECK-LABEL: @icmp1(
164
+ ; CHECK-NEXT: [[A2:%.*]] = call i8* @llvm.launder.invariant.group.p0i8(i8* [[A:%.*]])
165
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.strip.invariant.group.p0i8(i8* [[A]])
166
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8* [[A2]], [[TMP1]]
167
+ ; CHECK-NEXT: ret i1 [[R]]
168
+ ;
169
+ %a2 = call i8* @llvm.launder.invariant.group.p0i8 (i8* %a )
170
+ %a3 = call i8* @llvm.strip.invariant.group.p0i8 (i8* %a2 )
171
+ %r = icmp eq i8* %a2 , %a3
172
+ ret i1 %r
173
+ }
174
+
175
+ define i1 @icmp2 (i8* %a , i8* %b ) {
176
+ ; CHECK-LABEL: @icmp2(
177
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8* @llvm.strip.invariant.group.p0i8(i8* [[A:%.*]])
178
+ ; CHECK-NEXT: [[TMP2:%.*]] = call i8* @llvm.launder.invariant.group.p0i8(i8* [[B:%.*]])
179
+ ; CHECK-NEXT: [[R:%.*]] = icmp eq i8* [[TMP1]], [[TMP2]]
180
+ ; CHECK-NEXT: ret i1 [[R]]
181
+ ;
182
+ %a2 = call i8* @llvm.launder.invariant.group.p0i8 (i8* %a )
183
+ %a3 = call i8* @llvm.strip.invariant.group.p0i8 (i8* %a2 )
184
+ %b2 = call i8* @llvm.strip.invariant.group.p0i8 (i8* %b )
185
+ %b3 = call i8* @llvm.launder.invariant.group.p0i8 (i8* %b2 )
186
+ %r = icmp eq i8* %a3 , %b3
187
+ ret i1 %r
188
+ }
189
+
162
190
declare i8* @llvm.launder.invariant.group.p0i8 (i8* )
163
191
declare i8 addrspace (42 )* @llvm.launder.invariant.group.p42i8 (i8 addrspace (42 )*)
164
192
declare i8* @llvm.strip.invariant.group.p0i8 (i8* )
0 commit comments