summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/Transforms/InstCombine/getelementptr.ll40
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/getelementptr.ll b/llvm/test/Transforms/InstCombine/getelementptr.ll
index 146ed04cdfe..92a143fa1e9 100644
--- a/llvm/test/Transforms/InstCombine/getelementptr.ll
+++ b/llvm/test/Transforms/InstCombine/getelementptr.ll
@@ -1168,3 +1168,43 @@ define <2 x i32*> @PR32414(i32** %ptr) {
%tmp1 = getelementptr inbounds i32, i32* %tmp0, <2 x i64> <i64 0, i64 1>
ret <2 x i32*> %tmp1
}
+
+define i32* @test_bitcast_nzgep([1 x i32]* %base, i64 %idx) {
+; CHECK-LABEL: @test_bitcast_nzgep(
+; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 0, i64 [[IDX:%.*]]
+; CHECK-NEXT: ret i32* [[PTR]]
+;
+ %base2 = bitcast [1 x i32]* %base to i32*
+ %ptr = getelementptr inbounds i32, i32* %base2, i64 %idx
+ ret i32* %ptr
+}
+
+define i32* @test_zgep_nzgep([1 x i32]* %base, i64 %idx) {
+; CHECK-LABEL: @test_zgep_nzgep(
+; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 0, i64 [[IDX:%.*]]
+; CHECK-NEXT: ret i32* [[PTR]]
+;
+ %base2 = getelementptr [1 x i32], [1 x i32]* %base, i64 0, i64 0
+ %ptr = getelementptr inbounds i32, i32* %base2, i64 %idx
+ ret i32* %ptr
+}
+
+define i32* @test_nzgep_zgep([1 x i32]* %base, i64 %idx) {
+; CHECK-LABEL: @test_nzgep_zgep(
+; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 [[IDX:%.*]], i64 0
+; CHECK-NEXT: ret i32* [[PTR]]
+;
+ %base2 = getelementptr inbounds [1 x i32], [1 x i32]* %base, i64 %idx
+ %ptr = getelementptr [1 x i32], [1 x i32]* %base2, i64 0, i64 0
+ ret i32* %ptr
+}
+
+define i32* @test_gep_inbounds_of_gep(i32* %base) {
+; CHECK-LABEL: @test_gep_inbounds_of_gep(
+; CHECK-NEXT: [[PTR2:%.*]] = getelementptr inbounds i32, i32* [[BASE:%.*]], i64 8
+; CHECK-NEXT: ret i32* [[PTR2]]
+;
+ %ptr1 = getelementptr i32, i32* %base, i64 4
+ %ptr2 = getelementptr inbounds i32, i32* %ptr1, i64 4
+ ret i32* %ptr2
+}
OpenPOWER on IntegriCloud