From 3cfb081c19f706adc4ea32998dca1ab4feae0b2b Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 21 Mar 2023 10:41:15 +0100 Subject: [PATCH] [InstCombine] Add icmp gep tests without inbounds (NFC) --- llvm/test/Transforms/InstCombine/icmp-gep.ll | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/llvm/test/Transforms/InstCombine/icmp-gep.ll b/llvm/test/Transforms/InstCombine/icmp-gep.ll index 1ccd3819e659..5fef7ac43536 100644 --- a/llvm/test/Transforms/InstCombine/icmp-gep.ll +++ b/llvm/test/Transforms/InstCombine/icmp-gep.ll @@ -284,6 +284,32 @@ define i1 @test60(ptr %foo, i64 %i, i64 %j) { ret i1 %cmp } +define i1 @test_gep_ult_no_inbounds(ptr %foo, i64 %i, i64 %j) { +; CHECK-LABEL: @test_gep_ult_no_inbounds( +; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i32, ptr [[FOO:%.*]], i64 [[I:%.*]] +; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i8, ptr [[FOO]], i64 [[J:%.*]] +; CHECK-NEXT: [[CMP:%.*]] = icmp ult ptr [[GEP1]], [[GEP2]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %gep1 = getelementptr i32, ptr %foo, i64 %i + %gep2 = getelementptr i8, ptr %foo, i64 %j + %cmp = icmp ult ptr %gep1, %gep2 + ret i1 %cmp +} + +define i1 @test_gep_eq_no_inbounds(ptr %foo, i64 %i, i64 %j) { +; CHECK-LABEL: @test_gep_eq_no_inbounds( +; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i32, ptr [[FOO:%.*]], i64 [[I:%.*]] +; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i8, ptr [[FOO]], i64 [[J:%.*]] +; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[GEP1]], [[GEP2]] +; CHECK-NEXT: ret i1 [[CMP]] +; + %gep1 = getelementptr i32, ptr %foo, i64 %i + %gep2 = getelementptr i8, ptr %foo, i64 %j + %cmp = icmp eq ptr %gep1, %gep2 + ret i1 %cmp +} + define i1 @test60_as1(ptr addrspace(1) %foo, i64 %i, i64 %j) { ; CHECK-LABEL: @test60_as1( ; CHECK-NEXT: [[TMP1:%.*]] = trunc i64 [[I:%.*]] to i16