Skip to content

Commit f392554

Browse files
david-armaokblast
authored andcommitted
[LV][NFC] Remove undef from phi incoming values (llvm#163762)
Split off from PR llvm#163525, this standalone patch replaces use of undef as incoming PHI values with zero, in order to reduce the likelihood of contributors hitting the `undef deprecator` warning in github.
1 parent d48f9f9 commit f392554

21 files changed

+100
-114
lines changed

llvm/test/Transforms/LoopVectorize/2012-10-20-infloop.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ if.then46: ; preds = %for.body40
5656
br label %for.inc50
5757

5858
for.inc50: ; preds = %if.then46, %for.body40
59-
%k.1 = phi i32 [ undef, %for.body40 ], [ %inc47, %if.then46 ]
59+
%k.1 = phi i32 [ 0, %for.body40 ], [ %inc47, %if.then46 ]
6060
%step.1 = phi i32 [ %step.0121, %for.body40 ], [ %inc47, %if.then46 ]
6161
%indvars.iv.next124 = add i64 %indvars.iv123, 1
6262
%lftr.wideiv = trunc i64 %indvars.iv.next124 to i32

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ define i32 @fn1() local_unnamed_addr #0 {
99
; We expect the backend to expand all reductions.
1010
; CHECK: @llvm.vector.reduce
1111
entry:
12-
%0 = load i32, ptr @b, align 4, !tbaa !1
13-
%cmp40 = icmp sgt i32 %0, 0
14-
br i1 %cmp40, label %for.body.lr.ph, label %for.end
12+
br label %for.body.lr.ph
1513

1614
for.body.lr.ph: ; preds = %entry
1715
%1 = load ptr, ptr @a, align 8, !tbaa !5
@@ -21,8 +19,8 @@ for.body.lr.ph: ; preds = %entry
2119

2220
for.body: ; preds = %for.body.lr.ph, %for.body
2321
%indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ]
24-
%d.043 = phi i16 [ undef, %for.body.lr.ph ], [ %.sink28, %for.body ]
25-
%c.042 = phi i16 [ undef, %for.body.lr.ph ], [ %c.0., %for.body ]
22+
%d.043 = phi i16 [ 0, %for.body.lr.ph ], [ %.sink28, %for.body ]
23+
%c.042 = phi i16 [ 0, %for.body.lr.ph ], [ %c.0., %for.body ]
2624
%arrayidx = getelementptr inbounds i16, ptr %1, i64 %indvars.iv
2725
%4 = load i16, ptr %arrayidx, align 2, !tbaa !7
2826
%cmp2 = icmp sgt i16 %c.042, %4
@@ -33,10 +31,8 @@ for.body: ; preds = %for.body.lr.ph, %fo
3331
%cmp = icmp slt i64 %indvars.iv.next, %3
3432
br i1 %cmp, label %for.body, label %for.end
3533

36-
for.end: ; preds = %for.body, %entry
37-
%c.0.lcssa = phi i16 [ undef, %entry ], [ %c.0., %for.body ]
38-
%d.0.lcssa = phi i16 [ undef, %entry ], [ %.sink28, %for.body ]
39-
%cmp26 = icmp sgt i16 %c.0.lcssa, %d.0.lcssa
34+
for.end: ; preds = %for.body
35+
%cmp26 = icmp sgt i16 %c.0., %.sink28
4036
%conv27 = zext i1 %cmp26 to i32
4137
ret i32 %conv27
4238
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ define void @_Z1dv() local_unnamed_addr #0 {
1818
; CHECK-NEXT: br label [[FOR_COND:%.*]]
1919
; CHECK: for.cond:
2020
; CHECK-NEXT: [[F_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[ADD5:%.*]], [[FOR_COND_CLEANUP:%.*]] ]
21-
; CHECK-NEXT: [[G_0:%.*]] = phi i32 [ undef, [[ENTRY]] ], [ [[G_1_LCSSA:%.*]], [[FOR_COND_CLEANUP]] ]
21+
; CHECK-NEXT: [[G_0:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[G_1_LCSSA:%.*]], [[FOR_COND_CLEANUP]] ]
2222
; CHECK-NEXT: [[CMP12:%.*]] = icmp ult i32 [[G_0]], 4
2323
; CHECK-NEXT: [[CONV:%.*]] = and i32 [[F_0]], 65535
2424
; CHECK-NEXT: br i1 [[CMP12]], label [[FOR_BODY_LR_PH:%.*]], label [[FOR_COND_CLEANUP]]
@@ -50,7 +50,7 @@ entry:
5050

5151
for.cond: ; preds = %for.cond.cleanup, %entry
5252
%f.0 = phi i32 [ 0, %entry ], [ %add5, %for.cond.cleanup ]
53-
%g.0 = phi i32 [ undef, %entry ], [ %g.1.lcssa, %for.cond.cleanup ]
53+
%g.0 = phi i32 [ 0, %entry ], [ %g.1.lcssa, %for.cond.cleanup ]
5454
%cmp12 = icmp ult i32 %g.0, 4
5555
%conv = and i32 %f.0, 65535
5656
br i1 %cmp12, label %for.body.lr.ph, label %for.cond.cleanup

llvm/test/Transforms/LoopVectorize/AArch64/sve-interleaved-accesses.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -728,8 +728,8 @@ define void @int_float_struct(ptr nocapture readonly %p) #0 {
728728
; CHECK-NEXT: br label [[VECTOR_BODY:%.*]]
729729
; CHECK: vector.body:
730730
; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
731-
; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <vscale x 4 x float> [ insertelement (<vscale x 4 x float> zeroinitializer, float undef, i32 0), [[VECTOR_PH]] ], [ [[TMP7:%.*]], [[VECTOR_BODY]] ]
732-
; CHECK-NEXT: [[VEC_PHI1:%.*]] = phi <vscale x 4 x i32> [ insertelement (<vscale x 4 x i32> zeroinitializer, i32 undef, i32 0), [[VECTOR_PH]] ], [ [[TMP6:%.*]], [[VECTOR_BODY]] ]
731+
; CHECK-NEXT: [[VEC_PHI:%.*]] = phi <vscale x 4 x float> [ zeroinitializer, [[VECTOR_PH]] ], [ [[TMP7:%.*]], [[VECTOR_BODY]] ]
732+
; CHECK-NEXT: [[VEC_PHI1:%.*]] = phi <vscale x 4 x i32> [ zeroinitializer, [[VECTOR_PH]] ], [ [[TMP6:%.*]], [[VECTOR_BODY]] ]
733733
; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds [[STRUCT_INTFLOAT:%.*]], ptr [[P:%.*]], i64 [[INDEX]]
734734
; CHECK-NEXT: [[WIDE_VEC:%.*]] = load <vscale x 8 x i32>, ptr [[TMP2]], align 4
735735
; CHECK-NEXT: [[STRIDED_VEC:%.*]] = call { <vscale x 4 x i32>, <vscale x 4 x i32> } @llvm.vector.deinterleave2.nxv8i32(<vscale x 8 x i32> [[WIDE_VEC]])
@@ -755,8 +755,8 @@ for.cond.cleanup: ; preds = %for.body
755755

756756
for.body: ; preds = %for.body, %entry
757757
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
758-
%SumB.014 = phi float [ undef, %entry ], [ %add3, %for.body ]
759-
%SumA.013 = phi i32 [ undef, %entry ], [ %add, %for.body ]
758+
%SumB.014 = phi float [ 0.0e+00, %entry ], [ %add3, %for.body ]
759+
%SumA.013 = phi i32 [ 0, %entry ], [ %add, %for.body ]
760760
%a = getelementptr inbounds %struct.IntFloat, ptr %p, i64 %indvars.iv, i32 0
761761
%load1 = load i32, ptr %a, align 4
762762
%add = add nsw i32 %load1, %SumA.013

llvm/test/Transforms/LoopVectorize/ARM/arm-ieee-vectorize.ll

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,14 @@ for.end: ; preds = %for.end.loopexit, %
8484
; CHECK: We can vectorize this loop!
8585
define i32 @redi(ptr noalias nocapture readonly %a, ptr noalias nocapture readonly %b, i32 %N) {
8686
entry:
87-
%cmp5 = icmp eq i32 %N, 0
88-
br i1 %cmp5, label %for.end, label %for.body.preheader
87+
br label %for.body.preheader
8988

9089
for.body.preheader: ; preds = %entry
9190
br label %for.body
9291

9392
for.body: ; preds = %for.body.preheader, %for.body
9493
%i.07 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
95-
%Red.06 = phi i32 [ %add, %for.body ], [ undef, %for.body.preheader ]
94+
%Red.06 = phi i32 [ %add, %for.body ], [ 0, %for.body.preheader ]
9695
%arrayidx = getelementptr inbounds i32, ptr %a, i32 %i.07
9796
%0 = load i32, ptr %arrayidx, align 4
9897
%arrayidx1 = getelementptr inbounds i32, ptr %b, i32 %i.07
@@ -107,9 +106,8 @@ for.end.loopexit: ; preds = %for.body
107106
%add.lcssa = phi i32 [ %add, %for.body ]
108107
br label %for.end
109108

110-
for.end: ; preds = %for.end.loopexit, %entry
111-
%Red.0.lcssa = phi i32 [ undef, %entry ], [ %add.lcssa, %for.end.loopexit ]
112-
ret i32 %Red.0.lcssa
109+
for.end: ; preds = %for.end.loopexit
110+
ret i32 %add.lcssa
113111
}
114112

115113
; Floating-point loops need fast-math to be vectorizeable
@@ -121,15 +119,14 @@ for.end: ; preds = %for.end.loopexit, %
121119
; DARWIN: We can vectorize this loop!
122120
define float @redf(ptr noalias nocapture readonly %a, ptr noalias nocapture readonly %b, i32 %N) {
123121
entry:
124-
%cmp5 = icmp eq i32 %N, 0
125-
br i1 %cmp5, label %for.end, label %for.body.preheader
122+
br label %for.body.preheader
126123

127124
for.body.preheader: ; preds = %entry
128125
br label %for.body
129126

130127
for.body: ; preds = %for.body.preheader, %for.body
131128
%i.07 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
132-
%Red.06 = phi float [ %add, %for.body ], [ undef, %for.body.preheader ]
129+
%Red.06 = phi float [ %add, %for.body ], [ 0.0e+00, %for.body.preheader ]
133130
%arrayidx = getelementptr inbounds float, ptr %a, i32 %i.07
134131
%0 = load float, ptr %arrayidx, align 4
135132
%arrayidx1 = getelementptr inbounds float, ptr %b, i32 %i.07
@@ -144,9 +141,8 @@ for.end.loopexit: ; preds = %for.body
144141
%add.lcssa = phi float [ %add, %for.body ]
145142
br label %for.end
146143

147-
for.end: ; preds = %for.end.loopexit, %entry
148-
%Red.0.lcssa = phi float [ undef, %entry ], [ %add.lcssa, %for.end.loopexit ]
149-
ret float %Red.0.lcssa
144+
for.end: ; preds = %for.end.loopexit
145+
ret float %add.lcssa
150146
}
151147

152148
; Make sure calls that turn into builtins are also covered
@@ -252,7 +248,7 @@ for.body.preheader: ; preds = %entry
252248

253249
for.body: ; preds = %for.body.preheader, %for.body
254250
%i.07 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
255-
%Red.06 = phi i32 [ %add, %for.body ], [ undef, %for.body.preheader ]
251+
%Red.06 = phi i32 [ %add, %for.body ], [ 0, %for.body.preheader ]
256252
%arrayidx = getelementptr inbounds i32, ptr %a, i32 %i.07
257253
%0 = load i32, ptr %arrayidx, align 4
258254
%arrayidx1 = getelementptr inbounds i32, ptr %b, i32 %i.07
@@ -268,7 +264,7 @@ for.end.loopexit: ; preds = %for.body
268264
br label %for.end
269265

270266
for.end: ; preds = %for.end.loopexit, %entry
271-
%Red.0.lcssa = phi i32 [ undef, %entry ], [ %add.lcssa, %for.end.loopexit ]
267+
%Red.0.lcssa = phi i32 [ 0, %entry ], [ %add.lcssa, %for.end.loopexit ]
272268
ret i32 %Red.0.lcssa
273269
}
274270

@@ -277,15 +273,14 @@ for.end: ; preds = %for.end.loopexit, %
277273
; CHECK: We can vectorize this loop!
278274
define float @redf_fast(ptr noalias nocapture readonly %a, ptr noalias nocapture readonly %b, i32 %N) {
279275
entry:
280-
%cmp5 = icmp eq i32 %N, 0
281-
br i1 %cmp5, label %for.end, label %for.body.preheader
276+
br label %for.body.preheader
282277

283278
for.body.preheader: ; preds = %entry
284279
br label %for.body
285280

286281
for.body: ; preds = %for.body.preheader, %for.body
287282
%i.07 = phi i32 [ %inc, %for.body ], [ 0, %for.body.preheader ]
288-
%Red.06 = phi float [ %add, %for.body ], [ undef, %for.body.preheader ]
283+
%Red.06 = phi float [ %add, %for.body ], [ 0.0e+00, %for.body.preheader ]
289284
%arrayidx = getelementptr inbounds float, ptr %a, i32 %i.07
290285
%0 = load float, ptr %arrayidx, align 4
291286
%arrayidx1 = getelementptr inbounds float, ptr %b, i32 %i.07
@@ -300,9 +295,8 @@ for.end.loopexit: ; preds = %for.body
300295
%add.lcssa = phi float [ %add, %for.body ]
301296
br label %for.end
302297

303-
for.end: ; preds = %for.end.loopexit, %entry
304-
%Red.0.lcssa = phi float [ undef, %entry ], [ %add.lcssa, %for.end.loopexit ]
305-
ret float %Red.0.lcssa
298+
for.end: ; preds = %for.end.loopexit
299+
ret float %add.lcssa
306300
}
307301

308302
; Make sure calls that turn into builtins are also covered

llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ define dso_local i32 @predicated_test(i32 noundef %0, ptr %glob) #0 {
249249
br label %7
250250

251251
7: ; preds = %5, %155
252-
%8 = phi i32 [ %10, %155 ], [ undef, %5 ]
252+
%8 = phi i32 [ %10, %155 ], [ 0, %5 ]
253253
%9 = phi i32 [ %156, %155 ], [ 0, %5 ]
254254
%10 = shl i32 %8, 4
255255
store i32 %10, ptr %6, align 4

llvm/test/Transforms/LoopVectorize/X86/fp80-widest-type.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ define x86_fp80 @test() {
1414
; CHECK-NEXT: br label [[FOR_BODY3_I_3:%.*]]
1515
; CHECK: for.body3.i.3:
1616
; CHECK-NEXT: [[N_ADDR_112_I_3:%.*]] = phi i64 [ [[DEC_I_3:%.*]], [[FOR_BODY3_I_3]] ], [ 24, [[FOO_EXIT:%.*]] ]
17-
; CHECK-NEXT: [[X_ADDR_111_I_3:%.*]] = phi x86_fp80 [ [[MUL_I_3:%.*]], [[FOR_BODY3_I_3]] ], [ undef, [[FOO_EXIT]] ]
17+
; CHECK-NEXT: [[X_ADDR_111_I_3:%.*]] = phi x86_fp80 [ [[MUL_I_3:%.*]], [[FOR_BODY3_I_3]] ], [ 0xK00000000000000000000, [[FOO_EXIT]] ]
1818
; CHECK-NEXT: [[MUL_I_3]] = fmul x86_fp80 [[X_ADDR_111_I_3]], 0xK40008000000000000000
1919
; CHECK-NEXT: [[DEC_I_3]] = add nsw i64 [[N_ADDR_112_I_3]], -1
2020
; CHECK-NEXT: [[CMP2_I_3:%.*]] = icmp sgt i64 [[N_ADDR_112_I_3]], 1
@@ -28,7 +28,7 @@ foo.exit:
2828

2929
for.body3.i.3: ; preds = %for.body3.i.3, %foo.exit
3030
%n.addr.112.i.3 = phi i64 [ %dec.i.3, %for.body3.i.3 ], [ 24, %foo.exit ]
31-
%x.addr.111.i.3 = phi x86_fp80 [ %mul.i.3, %for.body3.i.3 ], [ undef, %foo.exit ]
31+
%x.addr.111.i.3 = phi x86_fp80 [ %mul.i.3, %for.body3.i.3 ], [ zeroinitializer, %foo.exit ]
3232
%mul.i.3 = fmul x86_fp80 %x.addr.111.i.3, 0xK40008000000000000000
3333
%dec.i.3 = add nsw i64 %n.addr.112.i.3, -1
3434
%cmp2.i.3 = icmp sgt i64 %n.addr.112.i.3, 1

llvm/test/Transforms/LoopVectorize/X86/rauw-bug.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ while.cond63.preheader.while.end76_crit_edge:
2121
ret void
2222

2323
while.body:
24-
%d2_fx.015 = phi double [ %sub52, %while.body ], [ undef, %entry ]
25-
%d2_fy.014 = phi double [ %sub58, %while.body ], [ undef, %entry ]
26-
%d3_fy.013 = phi double [ %div56, %while.body ], [ undef, %entry ]
27-
%d3_fx.012 = phi double [ %div50, %while.body ], [ undef, %entry ]
24+
%d2_fx.015 = phi double [ %sub52, %while.body ], [ 0.0e+00, %entry ]
25+
%d2_fy.014 = phi double [ %sub58, %while.body ], [ 0.0e+00, %entry ]
26+
%d3_fy.013 = phi double [ %div56, %while.body ], [ 0.0e+00, %entry ]
27+
%d3_fx.012 = phi double [ %div50, %while.body ], [ 0.0e+00, %entry ]
2828
%div50 = fmul double %d3_fx.012, 1.250000e-01
2929
%sub52 = fsub double 0.000000e+00, %div50
3030
%div56 = fmul double %d3_fy.013, 1.250000e-01

llvm/test/Transforms/LoopVectorize/X86/x86_fp80-interleaved-access.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ for.cond.cleanup:
1515

1616
for.body:
1717
%i.09 = phi i16 [ 0, %entry ], [ %add3, %for.body ]
18-
%res.08 = phi x86_fp80 [ undef, %entry ], [ %3, %for.body ]
18+
%res.08 = phi x86_fp80 [ zeroinitializer, %entry ], [ %3, %for.body ]
1919
%arrayidx = getelementptr inbounds x86_fp80, ptr %a, i16 %i.09
2020
%0 = load x86_fp80, ptr %arrayidx, align 1
2121
%add = or i16 %i.09, 1

llvm/test/Transforms/LoopVectorize/i8-induction.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ scalar.ph:
2020

2121
for.body:
2222
%mul16 = phi i8 [ 0, %scalar.ph ], [ %mul, %for.body ] ; <------- i8 induction var.
23-
%c.015 = phi i8 [ undef, %scalar.ph ], [ %conv8, %for.body ]
23+
%c.015 = phi i8 [ 0, %scalar.ph ], [ %conv8, %for.body ]
2424
%conv2 = sext i8 %c.015 to i32
2525
%tobool = icmp ne i8 %c.015, 0
2626
%.sink = select i1 %tobool, i8 %c.015, i8 %0

0 commit comments

Comments
 (0)