@@ -318,45 +318,45 @@ size_t test3_bdos(struct annotated *p) {
318
318
// SANITIZE-WITH-ATTR-NEXT: [[CONV1:%.*]] = select i1 [[TMP2]], i32 [[TMP5]], i32 0
319
319
// SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
320
320
// SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV1]], ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA4]]
321
- // SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD7 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
321
+ // SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD6 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
322
322
// SANITIZE-WITH-ATTR-NEXT: [[ADD:%.*]] = add nsw i32 [[INDEX]], 1
323
- // SANITIZE-WITH-ATTR-NEXT: [[IDXPROM13 :%.*]] = sext i32 [[ADD]] to i64
324
- // SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD7 ]] to i64, !nosanitize [[META2]]
325
- // SANITIZE-WITH-ATTR-NEXT: [[TMP7:%.*]] = icmp ult i64 [[IDXPROM13 ]], [[TMP6]], !nosanitize [[META2]]
326
- // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP7]], label [[CONT20 :%.*]], label [[HANDLER_OUT_OF_BOUNDS16 :%.*]], !prof [[PROF3]], !nosanitize [[META2]]
327
- // SANITIZE-WITH-ATTR: handler.out_of_bounds16 :
328
- // SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB6:[0-9]+]], i64 [[IDXPROM13 ]]) #[[ATTR10]], !nosanitize [[META2]]
323
+ // SANITIZE-WITH-ATTR-NEXT: [[IDXPROM12 :%.*]] = sext i32 [[ADD]] to i64
324
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD6 ]] to i64, !nosanitize [[META2]]
325
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP7:%.*]] = icmp ult i64 [[IDXPROM12 ]], [[TMP6]], !nosanitize [[META2]]
326
+ // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP7]], label [[CONT19 :%.*]], label [[HANDLER_OUT_OF_BOUNDS15 :%.*]], !prof [[PROF3]], !nosanitize [[META2]]
327
+ // SANITIZE-WITH-ATTR: handler.out_of_bounds15 :
328
+ // SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB6:[0-9]+]], i64 [[IDXPROM12 ]]) #[[ATTR10]], !nosanitize [[META2]]
329
329
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
330
- // SANITIZE-WITH-ATTR: cont20 :
331
- // SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD7 ]], 3
332
- // SANITIZE-WITH-ATTR-NEXT: [[TMP9:%.*]] = shl i32 [[DOT_COUNTED_BY_LOAD7 ]], 2
330
+ // SANITIZE-WITH-ATTR: cont19 :
331
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD6 ]], 3
332
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP9:%.*]] = shl i32 [[DOT_COUNTED_BY_LOAD6 ]], 2
333
333
// SANITIZE-WITH-ATTR-NEXT: [[TMP10:%.*]] = add i32 [[TMP9]], 240
334
334
// SANITIZE-WITH-ATTR-NEXT: [[TMP11:%.*]] = and i32 [[TMP10]], 252
335
- // SANITIZE-WITH-ATTR-NEXT: [[CONV9 :%.*]] = select i1 [[TMP8]], i32 [[TMP11]], i32 0
336
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX18 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM13 ]]
337
- // SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV9 ]], ptr [[ARRAYIDX18 ]], align 4, !tbaa [[TBAA4]]
338
- // SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD23 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
339
- // SANITIZE-WITH-ATTR-NEXT: [[ADD29 :%.*]] = add nsw i32 [[INDEX]], 2
340
- // SANITIZE-WITH-ATTR-NEXT: [[IDXPROM30 :%.*]] = sext i32 [[ADD29 ]] to i64
341
- // SANITIZE-WITH-ATTR-NEXT: [[TMP12:%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD23 ]] to i64, !nosanitize [[META2]]
342
- // SANITIZE-WITH-ATTR-NEXT: [[TMP13:%.*]] = icmp ult i64 [[IDXPROM30 ]], [[TMP12]], !nosanitize [[META2]]
343
- // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP13]], label [[CONT37 :%.*]], label [[HANDLER_OUT_OF_BOUNDS33 :%.*]], !prof [[PROF3]], !nosanitize [[META2]]
344
- // SANITIZE-WITH-ATTR: handler.out_of_bounds33 :
345
- // SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB7:[0-9]+]], i64 [[IDXPROM30 ]]) #[[ATTR10]], !nosanitize [[META2]]
335
+ // SANITIZE-WITH-ATTR-NEXT: [[CONV8 :%.*]] = select i1 [[TMP8]], i32 [[TMP11]], i32 0
336
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX17 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM12 ]]
337
+ // SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV8 ]], ptr [[ARRAYIDX17 ]], align 4, !tbaa [[TBAA4]]
338
+ // SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD21 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
339
+ // SANITIZE-WITH-ATTR-NEXT: [[ADD27 :%.*]] = add nsw i32 [[INDEX]], 2
340
+ // SANITIZE-WITH-ATTR-NEXT: [[IDXPROM28 :%.*]] = sext i32 [[ADD27 ]] to i64
341
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP12:%.*]] = zext i32 [[DOT_COUNTED_BY_LOAD21 ]] to i64, !nosanitize [[META2]]
342
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP13:%.*]] = icmp ult i64 [[IDXPROM28 ]], [[TMP12]], !nosanitize [[META2]]
343
+ // SANITIZE-WITH-ATTR-NEXT: br i1 [[TMP13]], label [[CONT35 :%.*]], label [[HANDLER_OUT_OF_BOUNDS31 :%.*]], !prof [[PROF3]], !nosanitize [[META2]]
344
+ // SANITIZE-WITH-ATTR: handler.out_of_bounds31 :
345
+ // SANITIZE-WITH-ATTR-NEXT: tail call void @__ubsan_handle_out_of_bounds_abort(ptr nonnull @[[GLOB7:[0-9]+]], i64 [[IDXPROM28 ]]) #[[ATTR10]], !nosanitize [[META2]]
346
346
// SANITIZE-WITH-ATTR-NEXT: unreachable, !nosanitize [[META2]]
347
- // SANITIZE-WITH-ATTR: cont37 :
348
- // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX35 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM30 ]]
347
+ // SANITIZE-WITH-ATTR: cont35 :
348
+ // SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX33 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM28 ]]
349
349
// SANITIZE-WITH-ATTR-NEXT: [[TMP14:%.*]] = icmp sgt i32 [[FAM_IDX]], -1
350
- // SANITIZE-WITH-ATTR-NEXT: [[TMP15:%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD23 ]] to i64
350
+ // SANITIZE-WITH-ATTR-NEXT: [[TMP15:%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD21 ]] to i64
351
351
// SANITIZE-WITH-ATTR-NEXT: [[TMP16:%.*]] = sext i32 [[FAM_IDX]] to i64
352
352
// SANITIZE-WITH-ATTR-NEXT: [[TMP17:%.*]] = sub nsw i64 [[TMP15]], [[TMP16]]
353
353
// SANITIZE-WITH-ATTR-NEXT: [[TMP18:%.*]] = icmp sgt i64 [[TMP17]], -1
354
354
// SANITIZE-WITH-ATTR-NEXT: [[TMP19:%.*]] = and i1 [[TMP14]], [[TMP18]]
355
355
// SANITIZE-WITH-ATTR-NEXT: [[DOTTR:%.*]] = trunc i64 [[TMP17]] to i32
356
356
// SANITIZE-WITH-ATTR-NEXT: [[TMP20:%.*]] = shl i32 [[DOTTR]], 2
357
357
// SANITIZE-WITH-ATTR-NEXT: [[TMP21:%.*]] = and i32 [[TMP20]], 252
358
- // SANITIZE-WITH-ATTR-NEXT: [[CONV25 :%.*]] = select i1 [[TMP19]], i32 [[TMP21]], i32 0
359
- // SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV25 ]], ptr [[ARRAYIDX35 ]], align 4, !tbaa [[TBAA4]]
358
+ // SANITIZE-WITH-ATTR-NEXT: [[CONV23 :%.*]] = select i1 [[TMP19]], i32 [[TMP21]], i32 0
359
+ // SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV23 ]], ptr [[ARRAYIDX33 ]], align 4, !tbaa [[TBAA4]]
360
360
// SANITIZE-WITH-ATTR-NEXT: ret void
361
361
//
362
362
// NO-SANITIZE-WITH-ATTR-LABEL: define dso_local void @test4(
@@ -373,18 +373,18 @@ size_t test3_bdos(struct annotated *p) {
373
373
// NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64
374
374
// NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM]]
375
375
// NO-SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV1]], ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA2]]
376
- // NO-SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD4 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
377
- // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP4:%.*]] = shl i32 [[DOT_COUNTED_BY_LOAD4 ]], 2
376
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD3 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
377
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP4:%.*]] = shl i32 [[DOT_COUNTED_BY_LOAD3 ]], 2
378
378
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP5:%.*]] = add i32 [[TMP4]], 240
379
- // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD4 ]], 3
379
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP6:%.*]] = icmp sgt i32 [[DOT_COUNTED_BY_LOAD3 ]], 3
380
380
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP7:%.*]] = and i32 [[TMP5]], 252
381
- // NO-SANITIZE-WITH-ATTR-NEXT: [[CONV6 :%.*]] = select i1 [[TMP6]], i32 [[TMP7]], i32 0
381
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[CONV5 :%.*]] = select i1 [[TMP6]], i32 [[TMP7]], i32 0
382
382
// NO-SANITIZE-WITH-ATTR-NEXT: [[ADD:%.*]] = add nsw i32 [[INDEX]], 1
383
- // NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM8 :%.*]] = sext i32 [[ADD]] to i64
384
- // NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX9 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM8 ]]
385
- // NO-SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV6 ]], ptr [[ARRAYIDX9 ]], align 4, !tbaa [[TBAA2]]
386
- // NO-SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD12 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
387
- // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD12 ]] to i64
383
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM7 :%.*]] = sext i32 [[ADD]] to i64
384
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX8 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM7 ]]
385
+ // NO-SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV5 ]], ptr [[ARRAYIDX8 ]], align 4, !tbaa [[TBAA2]]
386
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[DOT_COUNTED_BY_LOAD10 :%.*]] = load i32, ptr [[DOT_COUNTED_BY_GEP]], align 4
387
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[TMP8:%.*]] = sext i32 [[DOT_COUNTED_BY_LOAD10 ]] to i64
388
388
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP9:%.*]] = sext i32 [[FAM_IDX]] to i64
389
389
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP10:%.*]] = sub nsw i64 [[TMP8]], [[TMP9]]
390
390
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP11:%.*]] = icmp sgt i64 [[TMP10]], -1
@@ -393,11 +393,11 @@ size_t test3_bdos(struct annotated *p) {
393
393
// NO-SANITIZE-WITH-ATTR-NEXT: [[DOTTR:%.*]] = trunc i64 [[TMP10]] to i32
394
394
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP14:%.*]] = shl i32 [[DOTTR]], 2
395
395
// NO-SANITIZE-WITH-ATTR-NEXT: [[TMP15:%.*]] = and i32 [[TMP14]], 252
396
- // NO-SANITIZE-WITH-ATTR-NEXT: [[CONV14 :%.*]] = select i1 [[TMP13]], i32 [[TMP15]], i32 0
397
- // NO-SANITIZE-WITH-ATTR-NEXT: [[ADD16 :%.*]] = add nsw i32 [[INDEX]], 2
398
- // NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM17 :%.*]] = sext i32 [[ADD16 ]] to i64
399
- // NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX18 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM17 ]]
400
- // NO-SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV14 ]], ptr [[ARRAYIDX18 ]], align 4, !tbaa [[TBAA2]]
396
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[CONV12 :%.*]] = select i1 [[TMP13]], i32 [[TMP15]], i32 0
397
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[ADD14 :%.*]] = add nsw i32 [[INDEX]], 2
398
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM15 :%.*]] = sext i32 [[ADD14 ]] to i64
399
+ // NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX16 :%.*]] = getelementptr inbounds [0 x i32], ptr [[ARRAY]], i64 0, i64 [[IDXPROM15 ]]
400
+ // NO-SANITIZE-WITH-ATTR-NEXT: store i32 [[CONV12 ]], ptr [[ARRAYIDX16 ]], align 4, !tbaa [[TBAA2]]
401
401
// NO-SANITIZE-WITH-ATTR-NEXT: ret void
402
402
//
403
403
// SANITIZE-WITHOUT-ATTR-LABEL: define dso_local void @test4(
0 commit comments