@@ -70,7 +70,7 @@ struct anon_struct {
70
70
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
71
71
// SANITIZE-WITH-ATTR: cont3:
72
72
// SANITIZE-WITH-ATTR-NEXT: [[ARRAY:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 12
73
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
73
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
74
74
// SANITIZE-WITH-ATTR-NEXT: store i32 [[VAL]], ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4:![0-9]+]]
75
75
// SANITIZE-WITH-ATTR-NEXT: ret void
76
76
//
@@ -282,46 +282,43 @@ size_t test3_bdos(struct annotated *p) {
282
282
// SANITIZE-WITH-ATTR-NEXT: [[TMP4:%.*]] = add i32 [[TMP3]], 244
283
283
// SANITIZE-WITH-ATTR-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 252
284
284
// SANITIZE-WITH-ATTR-NEXT: [[CONV1:%.*]] = select i1 [[TMP2]], i32 [[TMP5]], i32 0
285
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
285
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
286
286
// SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV1]], ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4]]
287
- // SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD6:%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
288
287
// SANITIZE-WITH-ATTR-NEXT: [[ADD:%.*]] = add nsw i32 [[INDEX]], 1
289
288
// SANITIZE-WITH-ATTR-NEXT: [[IDXPROM12:%.*]] = sext i32 [[ADD]] to i64
290
- // SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD6]] to i64, !nosanitize [[META2]]
291
- // SANITIZE-WITH-ATTR-NEXT: [[TMP7:%.*]] = icmp ult i64 [[IDXPROM12]], [[TMP6]], !nosanitize [[META2]]
292
- // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP7]], label [[CONT19:%.*]], label [[HANDLER_OUT_OF_BOUNDS15:%.*]], !prof [[PROF3]], !nosanitize [[META2]]
289
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = icmp ult i64 [[IDXPROM12]], [[TMP0]], !nosanitize [[META2]]
290
+ // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP6]], label [[CONT19:%.*]], label [[HANDLER_OUT_OF_BOUNDS15:%.*]], !prof [[PROF3]], !nosanitize [[META2]]
293
291
// SANITIZE-WITH-ATTR: handler.out_of_bounds15:
294
292
// SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB6:[0-9]+]], i64 [[IDXPROM12]]) #[[ATTR8]], !nosanitize [[META2]]
295
293
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
296
294
// SANITIZE-WITH-ATTR: cont19:
297
- // SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD6]], 3
298
- // SANITIZE-WITH-ATTR-NEXT: [[TMP9:%.*]] = shl i32 [[DOT_COUNTED_BY_LOAD6]], 2
299
- // SANITIZE-WITH-ATTR-NEXT: [[TMP10:%.*]] = add i32 [[TMP9]], 240
300
- // SANITIZE-WITH-ATTR-NEXT: [[TMP11:%.*]] = and i32 [[TMP10]], 252
301
- // SANITIZE-WITH-ATTR-NEXT: [[CONV8:%.*]] = select i1 [[TMP8]], i32 [[TMP11]], i32 0
302
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM12]]
295
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP7:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD]], 3
296
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = add i32 [[TMP3]], 240
297
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP9:%.*]] = and i32 [[TMP8]], 252
298
+ // SANITIZE-WITH-ATTR-NEXT: [[CONV8:%.*]] = select i1 [[TMP7]], i32 [[TMP9]], i32 0
299
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM12]]
303
300
// SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV8]], ptr [[ARRAYIDX17]], align 4, !tbaa [[TBAA4]]
304
301
// SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD21:%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
305
302
// SANITIZE-WITH-ATTR-NEXT: [[ADD27:%.*]] = add nsw i32 [[INDEX]], 2
306
303
// SANITIZE-WITH-ATTR-NEXT: [[IDXPROM28:%.*]] = sext i32 [[ADD27]] to i64
307
- // SANITIZE-WITH-ATTR-NEXT: [[TMP12 :%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD21]] to i64, !nosanitize [[META2]]
308
- // SANITIZE-WITH-ATTR-NEXT: [[TMP13 :%.*]] = icmp ult i64 [[IDXPROM28]], [[TMP12 ]], !nosanitize [[META2]]
309
- // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP13 ]], label [[CONT35:%.*]], label [[HANDLER_OUT_OF_BOUNDS31:%.*]], !prof [[PROF3]], !nosanitize [[META2]]
304
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP10 :%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD21]] to i64, !nosanitize [[META2]]
305
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP11 :%.*]] = icmp ult i64 [[IDXPROM28]], [[TMP10 ]], !nosanitize [[META2]]
306
+ // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP11 ]], label [[CONT35:%.*]], label [[HANDLER_OUT_OF_BOUNDS31:%.*]], !prof [[PROF3]], !nosanitize [[META2]]
310
307
// SANITIZE-WITH-ATTR: handler.out_of_bounds31:
311
308
// SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB7:[0-9]+]], i64 [[IDXPROM28]]) #[[ATTR8]], !nosanitize [[META2]]
312
309
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
313
310
// SANITIZE-WITH-ATTR: cont35:
314
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX33:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM28]]
315
- // SANITIZE-WITH-ATTR-NEXT: [[TMP14 :%.*]] = icmp sgt i32 [[FAM_IDX]], -1
316
- // SANITIZE-WITH-ATTR-NEXT: [[TMP15 :%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD21]] to i64
317
- // SANITIZE-WITH-ATTR-NEXT: [[TMP16 :%.*]] = sext i32 [[FAM_IDX]] to i64
318
- // SANITIZE-WITH-ATTR-NEXT: [[TMP17 :%.*]] = sub nsw i64 [[TMP15 ]], [[TMP16 ]]
319
- // SANITIZE-WITH-ATTR-NEXT: [[TMP18 :%.*]] = icmp sgt i64 [[TMP17 ]], -1
320
- // SANITIZE-WITH-ATTR-NEXT: [[TMP19 :%.*]] = and i1 [[TMP14 ]], [[TMP18 ]]
321
- // SANITIZE-WITH-ATTR-NEXT: [[DOTTR:%.*]] = trunc i64 [[TMP17 ]] to i32
322
- // SANITIZE-WITH-ATTR-NEXT: [[TMP20 :%.*]] = shl i32 [[DOTTR]], 2
323
- // SANITIZE-WITH-ATTR-NEXT: [[TMP21 :%.*]] = and i32 [[TMP20 ]], 252
324
- // SANITIZE-WITH-ATTR-NEXT: [[CONV23:%.*]] = select i1 [[TMP19 ]], i32 [[TMP21 ]], i32 0
311
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX33:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM28]]
312
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP12 :%.*]] = icmp sgt i32 [[FAM_IDX]], -1
313
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP13 :%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD21]] to i64
314
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP14 :%.*]] = sext i32 [[FAM_IDX]] to i64
315
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP15 :%.*]] = sub nsw i64 [[TMP13 ]], [[TMP14 ]]
316
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP16 :%.*]] = icmp sgt i64 [[TMP15 ]], -1
317
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP17 :%.*]] = and i1 [[TMP12 ]], [[TMP16 ]]
318
+ // SANITIZE-WITH-ATTR-NEXT: [[DOTTR:%.*]] = trunc i64 [[TMP15 ]] to i32
319
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP18 :%.*]] = shl i32 [[DOTTR]], 2
320
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP19 :%.*]] = and i32 [[TMP18 ]], 252
321
+ // SANITIZE-WITH-ATTR-NEXT: [[CONV23:%.*]] = select i1 [[TMP17 ]], i32 [[TMP19 ]], i32 0
325
322
// SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV23]], ptr [[ARRAYIDX33]], align 4, !tbaa [[TBAA4]]
326
323
// SANITIZE-WITH-ATTR-NEXT: ret void
327
324
//
@@ -625,7 +622,7 @@ size_t test6_bdos(struct anon_struct *p) {
625
622
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
626
623
// SANITIZE-WITH-ATTR: cont7:
627
624
// SANITIZE-WITH-ATTR-NEXT: [[INTS:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 9
628
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i8], ptr [[INTS]], i64 0, i64 [[IDXPROM]]
625
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i8], ptr [[INTS]], i64 0, i64 [[IDXPROM]]
629
626
// SANITIZE-WITH-ATTR-NEXT: store i8 -1, ptr [[ARRAYIDX]], align 1, !tbaa [[TBAA8:![0-9]+]]
630
627
// SANITIZE-WITH-ATTR-NEXT: ret void
631
628
//
@@ -698,7 +695,7 @@ size_t test7_bdos(struct union_of_fams *p) {
698
695
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
699
696
// SANITIZE-WITH-ATTR: cont7:
700
697
// SANITIZE-WITH-ATTR-NEXT: [[INTS:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 9
701
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i8], ptr [[INTS]], i64 0, i64 [[IDXPROM]]
698
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i8], ptr [[INTS]], i64 0, i64 [[IDXPROM]]
702
699
// SANITIZE-WITH-ATTR-NEXT: store i8 [[DOT_COUNTED_BY_LOAD]], ptr [[ARRAYIDX]], align 1, !tbaa [[TBAA8]]
703
700
// SANITIZE-WITH-ATTR-NEXT: ret void
704
701
//
@@ -779,7 +776,7 @@ size_t test8_bdos(struct union_of_fams *p) {
779
776
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
780
777
// SANITIZE-WITH-ATTR: cont7:
781
778
// SANITIZE-WITH-ATTR-NEXT: [[BYTES:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 12
782
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i8], ptr [[BYTES]], i64 0, i64 [[IDXPROM]]
779
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i8], ptr [[BYTES]], i64 0, i64 [[IDXPROM]]
783
780
// SANITIZE-WITH-ATTR-NEXT: store i8 -1, ptr [[ARRAYIDX]], align 1, !tbaa [[TBAA8]]
784
781
// SANITIZE-WITH-ATTR-NEXT: ret void
785
782
//
@@ -852,7 +849,7 @@ size_t test9_bdos(struct union_of_fams *p) {
852
849
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
853
850
// SANITIZE-WITH-ATTR: cont7:
854
851
// SANITIZE-WITH-ATTR-NEXT: [[BYTES:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 12
855
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i8], ptr [[BYTES]], i64 0, i64 [[IDXPROM]]
852
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i8], ptr [[BYTES]], i64 0, i64 [[IDXPROM]]
856
853
// SANITIZE-WITH-ATTR-NEXT: [[NARROW:%.*]] = tail call i32 @llvm.smax.i32(i32 [[DOT_COUNTED_BY_LOAD]], i32 0)
857
854
// SANITIZE-WITH-ATTR-NEXT: [[CONV:%.*]] = trunc i32 [[NARROW]] to i8
858
855
// SANITIZE-WITH-ATTR-NEXT: store i8 [[CONV]], ptr [[ARRAYIDX]], align 1, !tbaa [[TBAA8]]
@@ -939,7 +936,7 @@ size_t test10_bdos(struct union_of_fams *p) {
939
936
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
940
937
// SANITIZE-WITH-ATTR: cont3:
941
938
// SANITIZE-WITH-ATTR-NEXT: [[ARRAY:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 12
942
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
939
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
943
940
// SANITIZE-WITH-ATTR-NEXT: store i32 4, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4]]
944
941
// SANITIZE-WITH-ATTR-NEXT: ret void
945
942
//
@@ -1130,7 +1127,7 @@ struct test13_bar {
1130
1127
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
1131
1128
// SANITIZE-WITH-ATTR: cont5:
1132
1129
// SANITIZE-WITH-ATTR-NEXT: [[REVMAP:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP0]], i64 16
1133
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x ptr], ptr [[REVMAP]], i64 0, i64 [[INDEX]]
1130
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x ptr], ptr [[REVMAP]], i64 0, i64 [[INDEX]]
1134
1131
// SANITIZE-WITH-ATTR-NEXT: store ptr null, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA15:![0-9]+]]
1135
1132
// SANITIZE-WITH-ATTR-NEXT: ret i32 0
1136
1133
//
@@ -1157,7 +1154,7 @@ struct test13_bar {
1157
1154
// SANITIZE-WITHOUT-ATTR-NEXT: unreachable, !nosanitize [[META9]]
1158
1155
// SANITIZE-WITHOUT-ATTR: cont5:
1159
1156
// SANITIZE-WITHOUT-ATTR-NEXT: [[REVMAP:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP0]], i64 16
1160
- // SANITIZE-WITHOUT-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x ptr], ptr [[REVMAP]], i64 0, i64 [[INDEX]]
1157
+ // SANITIZE-WITHOUT-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x ptr], ptr [[REVMAP]], i64 0, i64 [[INDEX]]
1161
1158
// SANITIZE-WITHOUT-ATTR-NEXT: store ptr null, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA15:![0-9]+]]
1162
1159
// SANITIZE-WITHOUT-ATTR-NEXT: ret i32 0
1163
1160
//
@@ -1518,7 +1515,7 @@ struct test26_foo {
1518
1515
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
1519
1516
// SANITIZE-WITH-ATTR: cont5:
1520
1517
// SANITIZE-WITH-ATTR-NEXT: [[ARR:%.*]] = getelementptr inbounds nuw i8, ptr [[FOO]], i64 8
1521
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARR]], i64 0, i64 [[IDXPROM]]
1518
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARR]], i64 0, i64 [[IDXPROM]]
1522
1519
// SANITIZE-WITH-ATTR-NEXT: [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4]]
1523
1520
// SANITIZE-WITH-ATTR-NEXT: ret i32 [[TMP2]]
1524
1521
//
@@ -1589,7 +1586,7 @@ struct test27_foo {
1589
1586
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
1590
1587
// SANITIZE-WITH-ATTR: cont3:
1591
1588
// SANITIZE-WITH-ATTR-NEXT: [[ENTRIES:%.*]] = getelementptr inbounds nuw i8, ptr [[P]], i64 24
1592
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x ptr], ptr [[ENTRIES]], i64 0, i64 [[IDXPROM]]
1589
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x ptr], ptr [[ENTRIES]], i64 0, i64 [[IDXPROM]]
1593
1590
// SANITIZE-WITH-ATTR-NEXT: [[TMP2:%.*]] = load ptr, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA19:![0-9]+]]
1594
1591
// SANITIZE-WITH-ATTR-NEXT: [[IDXPROM4:%.*]] = sext i32 [[J]] to i64
1595
1592
// SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX5:%.*]] = getelementptr inbounds [[STRUCT_TEST27_BAR:%.*]], ptr [[TMP2]], i64 [[IDXPROM4]]
@@ -1655,7 +1652,7 @@ struct test28_foo {
1655
1652
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
1656
1653
// SANITIZE-WITH-ATTR: cont17:
1657
1654
// SANITIZE-WITH-ATTR-NEXT: [[ARR:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP2]], i64 12
1658
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARR]], i64 0, i64 [[IDXPROM]]
1655
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARR]], i64 0, i64 [[IDXPROM]]
1659
1656
// SANITIZE-WITH-ATTR-NEXT: [[TMP5:%.*]] = load i32, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4]]
1660
1657
// SANITIZE-WITH-ATTR-NEXT: ret i32 [[TMP5]]
1661
1658
//
@@ -1729,7 +1726,7 @@ struct annotated_struct_array {
1729
1726
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
1730
1727
// SANITIZE-WITH-ATTR: cont20:
1731
1728
// SANITIZE-WITH-ATTR-NEXT: [[ARRAY:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP2]], i64 12
1732
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM15]]
1729
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX18:%.*]] = getelementptr inbounds nuw [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM15]]
1733
1730
// SANITIZE-WITH-ATTR-NEXT: [[TMP5:%.*]] = tail call i32 @llvm.smax.i32(i32 [[DOT_COUNTED_BY_LOAD]], i32 0)
1734
1731
// SANITIZE-WITH-ATTR-NEXT: [[CONV:%.*]] = shl i32 [[TMP5]], 2
1735
1732
// SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV]], ptr [[ARRAYIDX18]], align 4, !tbaa [[TBAA4]]
0 commit comments