Skip to content

Commit 1155243

Browse files
committed
[InstCombine] Add tests for PR44423 and PR44425; NFC
1 parent 7f48171 commit 1155243

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

llvm/test/Transforms/InstCombine/getelementptr.ll

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,3 +1168,43 @@ define <2 x i32*> @PR32414(i32** %ptr) {
11681168
%tmp1 = getelementptr inbounds i32, i32* %tmp0, <2 x i64> <i64 0, i64 1>
11691169
ret <2 x i32*> %tmp1
11701170
}
1171+
1172+
define i32* @test_bitcast_nzgep([1 x i32]* %base, i64 %idx) {
1173+
; CHECK-LABEL: @test_bitcast_nzgep(
1174+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 0, i64 [[IDX:%.*]]
1175+
; CHECK-NEXT: ret i32* [[PTR]]
1176+
;
1177+
%base2 = bitcast [1 x i32]* %base to i32*
1178+
%ptr = getelementptr inbounds i32, i32* %base2, i64 %idx
1179+
ret i32* %ptr
1180+
}
1181+
1182+
define i32* @test_zgep_nzgep([1 x i32]* %base, i64 %idx) {
1183+
; CHECK-LABEL: @test_zgep_nzgep(
1184+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 0, i64 [[IDX:%.*]]
1185+
; CHECK-NEXT: ret i32* [[PTR]]
1186+
;
1187+
%base2 = getelementptr [1 x i32], [1 x i32]* %base, i64 0, i64 0
1188+
%ptr = getelementptr inbounds i32, i32* %base2, i64 %idx
1189+
ret i32* %ptr
1190+
}
1191+
1192+
define i32* @test_nzgep_zgep([1 x i32]* %base, i64 %idx) {
1193+
; CHECK-LABEL: @test_nzgep_zgep(
1194+
; CHECK-NEXT: [[PTR:%.*]] = getelementptr [1 x i32], [1 x i32]* [[BASE:%.*]], i64 [[IDX:%.*]], i64 0
1195+
; CHECK-NEXT: ret i32* [[PTR]]
1196+
;
1197+
%base2 = getelementptr inbounds [1 x i32], [1 x i32]* %base, i64 %idx
1198+
%ptr = getelementptr [1 x i32], [1 x i32]* %base2, i64 0, i64 0
1199+
ret i32* %ptr
1200+
}
1201+
1202+
define i32* @test_gep_inbounds_of_gep(i32* %base) {
1203+
; CHECK-LABEL: @test_gep_inbounds_of_gep(
1204+
; CHECK-NEXT: [[PTR2:%.*]] = getelementptr inbounds i32, i32* [[BASE:%.*]], i64 8
1205+
; CHECK-NEXT: ret i32* [[PTR2]]
1206+
;
1207+
%ptr1 = getelementptr i32, i32* %base, i64 4
1208+
%ptr2 = getelementptr inbounds i32, i32* %ptr1, i64 4
1209+
ret i32* %ptr2
1210+
}

0 commit comments

Comments
 (0)