Skip to content

Commit fa47370

Browse files
fhahnAlexisPerry
authored andcommitted
[LV] Remove loads from null from pr73894.ll test.
Load from null is UB, load from pointer arg instead.
1 parent c93faa4 commit fa47370

File tree

1 file changed

+7
-9
lines changed
  • llvm/test/Transforms/LoopVectorize/AArch64

1 file changed

+7
-9
lines changed

llvm/test/Transforms/LoopVectorize/AArch64/pr73894.ll

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33

44
target triple = "aarch64-unknown-linux-gnu"
55

6-
define i32 @pr70988() {
6+
define i32 @pr70988(ptr %src, i32 %n) {
77
; CHECK-LABEL: define i32 @pr70988(
88
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
99
; CHECK-NEXT: entry:
10-
; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr null, align 4
11-
; CHECK-NEXT: [[TMP1:%.*]] = and i32 [[TMP0]], 15
10+
; CHECK-NEXT: [[TMP1:%.*]] = and i32 %n, 15
1211
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.umax.i32(i32 [[TMP1]], i32 1)
1312
; CHECK-NEXT: [[UMAX:%.*]] = zext i32 [[TMP2]] to i64
1413
; CHECK-NEXT: br i1 false, label [[SCALAR_PH:%.*]], label [[VECTOR_PH:%.*]]
@@ -28,7 +27,7 @@ define i32 @pr70988() {
2827
; CHECK-NEXT: br i1 [[ACTIVE_LANE_MASK]], label [[PRED_LOAD_IF:%.*]], label [[PRED_LOAD_CONTINUE:%.*]]
2928
; CHECK: pred.load.if:
3029
; CHECK-NEXT: [[TMP3:%.*]] = add i64 [[INDEX]], 0
31-
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i32, ptr null, i64 [[TMP3]]
30+
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr i32, ptr %src, i64 [[TMP3]]
3231
; CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[TMP4]], align 8
3332
; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr [[TMP5]], align 4
3433
; CHECK-NEXT: br label [[PRED_LOAD_CONTINUE]]
@@ -38,7 +37,7 @@ define i32 @pr70988() {
3837
; CHECK-NEXT: br i1 [[ACTIVE_LANE_MASK2]], label [[PRED_LOAD_IF4:%.*]], label [[PRED_LOAD_CONTINUE5]]
3938
; CHECK: pred.load.if4:
4039
; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[INDEX]], 1
41-
; CHECK-NEXT: [[TMP10:%.*]] = getelementptr i32, ptr null, i64 [[TMP9]]
40+
; CHECK-NEXT: [[TMP10:%.*]] = getelementptr i32, ptr %src, i64 [[TMP9]]
4241
; CHECK-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 8
4342
; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr [[TMP11]], align 4
4443
; CHECK-NEXT: br label [[PRED_LOAD_CONTINUE5]]
@@ -65,7 +64,7 @@ define i32 @pr70988() {
6564
; CHECK: loop:
6665
; CHECK-NEXT: [[INDUC:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[INDUC_NEXT:%.*]], [[LOOP]] ]
6766
; CHECK-NEXT: [[MAX:%.*]] = phi i32 [ [[BC_MERGE_RDX]], [[SCALAR_PH]] ], [ [[TMP24:%.*]], [[LOOP]] ]
68-
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr null, i64 [[INDUC]]
67+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr i32, ptr %src, i64 [[INDUC]]
6968
; CHECK-NEXT: [[TMP22:%.*]] = load ptr, ptr [[GEP]], align 8
7069
; CHECK-NEXT: [[TMP23:%.*]] = load i32, ptr [[TMP22]], align 4
7170
; CHECK-NEXT: [[TMP24]] = tail call i32 @llvm.smax.i32(i32 [[TMP23]], i32 [[MAX]])
@@ -77,16 +76,15 @@ define i32 @pr70988() {
7776
; CHECK-NEXT: ret i32 [[RES]]
7877
;
7978
entry:
80-
%0 = load i32, ptr null
81-
%1 = and i32 %0, 15
79+
%1 = and i32 %n, 15
8280
%2 = call i32 @llvm.umax.i32(i32 %1, i32 1)
8381
%umax = zext i32 %2 to i64
8482
br label %loop
8583

8684
loop:
8785
%induc = phi i64 [ 0, %entry ], [ %induc.next, %loop ]
8886
%max = phi i32 [ 0, %entry ], [ %5, %loop ]
89-
%gep = getelementptr i32, ptr null, i64 %induc
87+
%gep = getelementptr i32, ptr %src, i64 %induc
9088
%3 = load ptr, ptr %gep
9189
%4 = load i32, ptr %3
9290
%5 = tail call i32 @llvm.smax.i32(i32 %4, i32 %max)

0 commit comments

Comments
 (0)