@@ -271,14 +271,13 @@ const int* foo10() {
271
271
// CHECK-NEXT: [[ARR_2:%.*]] = alloca [4 x i32], align 16
272
272
// CHECK-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
273
273
// CHECK-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
274
- // CHECK-NEXT: [[ARRINIT_BEGIN:%.*]] = getelementptr inbounds [4 x i32], ptr [[ARR_2]], i64 0, i64 0
275
274
// CHECK-NEXT: [[TMP_0:%.*]] = load i32, ptr [[A_ADDR]], align 4
276
- // CHECK-NEXT: store i32 [[TMP_0]], ptr [[ARRINIT_BEGIN ]], align 4
277
- // CHECK-NEXT: [[ARRINIT_ELEM:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_BEGIN ]], i64 1
275
+ // CHECK-NEXT: store i32 [[TMP_0]], ptr [[ARR_2 ]], align 4
276
+ // CHECK-NEXT: [[ARRINIT_ELEM:%.*]] = getelementptr inbounds i32, ptr [[ARR_2 ]], i64 1
278
277
// CHECK-NEXT: [[TMP_1:%.*]] = load i32, ptr [[B_ADDR]], align 4
279
278
// CHECK-NEXT: store i32 [[TMP_1]], ptr [[ARRINIT_ELEM]], align 4
280
- // CHECK-NEXT: [[ARRINIT_START:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_ELEM ]], i64 1
281
- // CHECK-NEXT: [[ARRINIT_END:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_BEGIN ]], i64 4
279
+ // CHECK-NEXT: [[ARRINIT_START:%.*]] = getelementptr inbounds i32, ptr [[ARR_2 ]], i64 2
280
+ // CHECK-NEXT: [[ARRINIT_END:%.*]] = getelementptr inbounds i32, ptr [[ARR_2 ]], i64 4
282
281
// CHECK-NEXT: br label [[ARRINIT_BODY:%.*]]
283
282
// CHECK: [[ARRINIT_CUR:%.*]] = phi ptr [ [[ARRINIT_START]], %entry ], [ [[ARRINIT_NEXT:%.*]], [[ARRINIT_BODY]] ]
284
283
// CHECK-NEXT: store i32 0, ptr [[ARRINIT_CUR]], align 4
@@ -297,10 +296,9 @@ void foo11(int a, int b) {
297
296
// CHECK-NEXT: [[ARR_3:%.*]] = alloca [2 x i32], align 4
298
297
// CHECK-NEXT: store i32 [[A:%.*]], ptr [[A_ADDR]], align 4
299
298
// CHECK-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4
300
- // CHECK-NEXT: [[ARRINIT_BEGIN:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARR_3]], i64 0, i64 0
301
299
// CHECK-NEXT: [[TMP_0:%.*]] = load i32, ptr [[A_ADDR]], align 4
302
- // CHECK-NEXT: store i32 [[TMP_0]], ptr [[ARRINIT_BEGIN ]], align 4
303
- // CHECK-NEXT: [[ARRINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_BEGIN ]], i64 1
300
+ // CHECK-NEXT: store i32 [[TMP_0]], ptr [[ARR_3 ]], align 4
301
+ // CHECK-NEXT: [[ARRINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[ARR_3 ]], i64 1
304
302
// CHECK-NEXT: [[TMP_1:%.*]] = load i32, ptr [[B_ADDR]], align 4
305
303
// CHECK-NEXT: store i32 [[TMP_1]], ptr [[ARRINIT_ELEMENT]], align 4
306
304
// CHECK-NEXT: ret void
@@ -336,8 +334,7 @@ const int* foo15() {
336
334
// CHECK-NEXT: entry:
337
335
// CHECK-NEXT: [[ARR_6:%.*arr6.*]] = alloca ptr, align 8
338
336
// CHECK-NEXT: [[REF_TMP:%.*]] = alloca [1 x i32], align 4
339
- // CHECK-NEXT: [[ARRINIT_BEGIN:%.*]] = getelementptr inbounds [1 x i32], ptr [[REF_TMP]], i64 0, i64 0
340
- // CHECK-NEXT: store i32 3, ptr [[ARRINIT_BEGIN]], align 4
337
+ // CHECK-NEXT: store i32 3, ptr [[REF_TMP]], align 4
341
338
// CHECK-NEXT: store ptr [[REF_TMP]], ptr [[ARR_6]], align 8
342
339
// CHECK-NEXT: ret void
343
340
void foo16 () {
@@ -348,10 +345,9 @@ void foo16() {
348
345
// CHECK-NEXT: entry:
349
346
// CHECK-NEXT: [[ARR_7:%.*arr7.*]] = alloca ptr, align 8
350
347
// CHECK-NEXT: [[REF_TMP:%.*]] = alloca [2 x i32], align 4
351
- // CHECK-NEXT: [[ARRINIT_BEGIN:%.*]] = getelementptr inbounds [2 x i32], ptr [[REF_TMP]], i64 0, i64 0
352
- // CHECK-NEXT: store i32 4, ptr [[ARRINIT_BEGIN]], align 4
353
- // CHECK-NEXT: [[ARRINIT_START:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_BEGIN]], i64 1
354
- // CHECK-NEXT: [[ARRINIT_END:%.*]] = getelementptr inbounds i32, ptr [[ARRINIT_BEGIN]], i64 2
348
+ // CHECK-NEXT: store i32 4, ptr [[REF_TMP]], align 4
349
+ // CHECK-NEXT: [[ARRINIT_START:%.*]] = getelementptr inbounds i32, ptr [[REF_TMP]], i64 1
350
+ // CHECK-NEXT: [[ARRINIT_END:%.*]] = getelementptr inbounds i32, ptr [[REF_TMP]], i64 2
355
351
// CHECK-NEXT: br label [[ARRINIT_BODY]]
356
352
// CHECK: [[ARRINIT_CUR:%.*]] = phi ptr [ [[ARRINIT_START]], %entry ], [ [[ARRINIT_NEXT:%.*]], [[ARRINIT_BODY]] ]
357
353
// CHECK-NEXT: store i32 0, ptr [[ARRINIT_CUR]], align 4
@@ -533,14 +529,12 @@ namespace gh68198 {
533
529
// CHECK-NEXT: entry
534
530
// CHECK-NEXT: [[ARR_10:%.*arr9.*]] = alloca ptr, align 8
535
531
// CHECK-NEXT: [[CALL_PTR]] = call noalias noundef nonnull ptr @_Znam(i64 noundef 16)
536
- // CHECK-NEXT: [[ARRAYINIT_BEGIN:%.*]] = getelementptr inbounds [2 x i32], ptr [[CALL]], i64 0, i64 0
537
- // CHECK-NEXT: store i32 1, ptr [[ARRAYINIT_BEGIN]], align 4
538
- // CHECK-NEXT: [[ARRAYINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[ARRAYINIT_BEGIN]], i64 1
532
+ // CHECK-NEXT: store i32 1, ptr [[CALL]], align 4
533
+ // CHECK-NEXT: [[ARRAYINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[CALL]], i64 1
539
534
// CHECK-NEXT: store i32 2, ptr [[ARRAYINIT_ELEMENT]], align 4
540
535
// CHECK-NEXT: [[ARRAY_EXP_NEXT:%.*]] = getelementptr inbounds [2 x i32], ptr %call, i64 1
541
- // CHECK-NEXT: [[ARRAYINIT_BEGIN1:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARRAY_EXP_NEXT]], i64 0, i64 0
542
- // CHECK-NEXT: store i32 3, ptr [[ARRAYINIT_BEGIN1]], align 4
543
- // CHECK-NEXT: [[ARRAYINIT_ELEMENT2:%.*]] = getelementptr inbounds i32, ptr [[ARRAYINIT_BEGIN1]], i64 1
536
+ // CHECK-NEXT: store i32 3, ptr [[ARRAY_EXP_NEXT]], align 4
537
+ // CHECK-NEXT: [[ARRAYINIT_ELEMENT2:%.*]] = getelementptr inbounds i32, ptr [[ARRAY_EXP_NEXT]], i64 1
544
538
// CHECK-NEXT: store i32 4, ptr [[ARRAYINIT_ELEMENT2]], align 4
545
539
// CHECK-NEXT: [[ARRAY_EXP_NEXT3:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARRAY_EXP_NEXT]], i64 1
546
540
// CHECK-NEXT: store ptr [[CALL_PTR]], ptr [[ARR_10]], align 8
@@ -553,14 +547,12 @@ namespace gh68198 {
553
547
// CHECK-NEXT: entry
554
548
// CHECK-NEXT: [[ARR_10:%.*arr10.*]] = alloca ptr, align 8
555
549
// CHECK-NEXT: [[CALL_PTR]] = call noalias noundef nonnull ptr @_Znam(i64 noundef 32)
556
- // CHECK-NEXT: [[ARRAYINIT_BEGIN:%.*]] = getelementptr inbounds [2 x i32], ptr [[CALL]], i64 0, i64 0
557
- // CHECK-NEXT: store i32 5, ptr [[ARRAYINIT_BEGIN]], align 4
558
- // CHECK-NEXT: [[ARRAYINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[ARRAYINIT_BEGIN]], i64 1
550
+ // CHECK-NEXT: store i32 5, ptr [[CALL]], align 4
551
+ // CHECK-NEXT: [[ARRAYINIT_ELEMENT:%.*]] = getelementptr inbounds i32, ptr [[CALL]], i64 1
559
552
// CHECK-NEXT: store i32 6, ptr [[ARRAYINIT_ELEMENT]], align 4
560
553
// CHECK-NEXT: [[ARRAY_EXP_NEXT:%.*]] = getelementptr inbounds [2 x i32], ptr %call, i64 1
561
- // CHECK-NEXT: [[ARRAYINIT_BEGIN1:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARRAY_EXP_NEXT]], i64 0, i64 0
562
- // CHECK-NEXT: store i32 7, ptr [[ARRAYINIT_BEGIN1]], align 4
563
- // CHECK-NEXT: [[ARRAYINIT_ELEMENT2:%.*]] = getelementptr inbounds i32, ptr [[ARRAYINIT_BEGIN1]], i64 1
554
+ // CHECK-NEXT: store i32 7, ptr [[ARRAY_EXP_NEXT]], align 4
555
+ // CHECK-NEXT: [[ARRAYINIT_ELEMENT2:%.*]] = getelementptr inbounds i32, ptr [[ARRAY_EXP_NEXT]], i64 1
564
556
// CHECK-NEXT: store i32 8, ptr [[ARRAYINIT_ELEMENT2]], align 4
565
557
// CHECK-NEXT: [[ARRAY_EXP_NEXT3:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARRAY_EXP_NEXT]], i64 1
566
558
// CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[ARRAY_EXP_NEXT3]], i8 0, i64 16, i1 false)
0 commit comments