@@ -1168,3 +1168,43 @@ define <2 x i32*> @PR32414(i32** %ptr) {
1168
1168
%tmp1 = getelementptr inbounds i32 , i32* %tmp0 , <2 x i64 > <i64 0 , i64 1 >
1169
1169
ret <2 x i32* > %tmp1
1170
1170
}
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