diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -4751,7 +4751,7 @@ SmallVector OperandsVec; for (unsigned I = 0, E = PH->getNumIncomingValues(); I < E; ++I) { if (!DT->isReachableFromEntry(PH->getIncomingBlock(I))) { - ValueList Operands(VL.size(), PoisonValue::get(PH->getType())); + ValueList Operands(VL.size(), UndefValue::get(PH->getType())); TE->setOperand(I, Operands); OperandsVec.push_back(Operands); continue; diff --git a/llvm/test/Transforms/SLPVectorizer/X86/landing_pad.ll b/llvm/test/Transforms/SLPVectorizer/X86/landing_pad.ll --- a/llvm/test/Transforms/SLPVectorizer/X86/landing_pad.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/landing_pad.ll @@ -10,7 +10,7 @@ ; CHECK: bb2.loopexit: ; CHECK-NEXT: br label [[BB2:%.*]] ; CHECK: bb2: -; CHECK-NEXT: [[TMP0:%.*]] = phi <4 x i32> [ [[SHUFFLE:%.*]], [[BB9:%.*]] ], [ poison, [[BB2_LOOPEXIT:%.*]] ] +; CHECK-NEXT: [[TMP0:%.*]] = phi <4 x i32> [ [[SHUFFLE:%.*]], [[BB9:%.*]] ], [ undef, [[BB2_LOOPEXIT:%.*]] ] ; CHECK-NEXT: ret void ; CHECK: bb3: ; CHECK-NEXT: [[TMP1:%.*]] = phi <2 x i32> [ [[TMP5:%.*]], [[BB6:%.*]] ], [ poison, [[BB1:%.*]] ] diff --git a/llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll b/llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll --- a/llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/malformed_phis.ll @@ -116,7 +116,7 @@ ; CHECK: bb2: ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP0:%.*]] = phi <2 x i32> [ undef, [[BB1]] ], [ poison, [[BB2:%.*]] ] +; CHECK-NEXT: [[TMP0:%.*]] = phi <2 x i32> [ undef, [[BB1]] ], [ undef, [[BB2:%.*]] ] ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <8 x i32> ; CHECK-NEXT: [[TMP1:%.*]] = extractelement <8 x i32> [[SHUFFLE]], i32 0 ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <16 x i32> poison, i32 [[TMP1]], i32 0 diff --git a/llvm/test/Transforms/SLPVectorizer/X86/phi-unreachable-input-block.ll b/llvm/test/Transforms/SLPVectorizer/X86/phi-unreachable-input-block.ll --- a/llvm/test/Transforms/SLPVectorizer/X86/phi-unreachable-input-block.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/phi-unreachable-input-block.ll @@ -15,7 +15,7 @@ ; CHECK: bb2: ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ poison, [[BB2:%.*]] ] +; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ undef, [[BB2:%.*]] ] ; CHECK-NEXT: [[TMP3:%.*]] = zext <2 x i8> [[TMP2]] to <2 x i64> ; CHECK-NEXT: [[GEP0:%.*]] = getelementptr i64, i64* [[PTR:%.*]], i64 0 ; CHECK-NEXT: [[TMP4:%.*]] = bitcast i64* [[GEP0]] to <2 x i64>* @@ -50,7 +50,7 @@ ; CHECK: bb2: ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ poison, [[BB2:%.*]] ] +; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ undef, [[BB2:%.*]] ] ; CHECK-NEXT: [[TMP3:%.*]] = zext <2 x i8> [[TMP2]] to <2 x i64> ; CHECK-NEXT: [[GEP0:%.*]] = getelementptr i64, i64* [[PTR:%.*]], i64 0 ; CHECK-NEXT: [[TMP4:%.*]] = bitcast i64* [[GEP0]] to <2 x i64>* @@ -85,7 +85,7 @@ ; CHECK: bb2: ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ poison, [[BB2:%.*]] ] +; CHECK-NEXT: [[TMP2:%.*]] = phi <2 x i8> [ [[TMP1]], [[BB1:%.*]] ], [ undef, [[BB2:%.*]] ] ; CHECK-NEXT: [[TMP3:%.*]] = zext <2 x i8> [[TMP2]] to <2 x i64> ; CHECK-NEXT: [[GEP0:%.*]] = getelementptr i64, i64* [[PTR:%.*]], i64 0 ; CHECK-NEXT: [[TMP4:%.*]] = bitcast i64* [[GEP0]] to <2 x i64>* diff --git a/llvm/test/Transforms/SLPVectorizer/X86/reduction-same-vals.ll b/llvm/test/Transforms/SLPVectorizer/X86/reduction-same-vals.ll --- a/llvm/test/Transforms/SLPVectorizer/X86/reduction-same-vals.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/reduction-same-vals.ll @@ -8,7 +8,7 @@ ; CHECK: bb2: ; CHECK-NEXT: br label [[BB3]] ; CHECK: bb3: -; CHECK-NEXT: [[TMP0:%.*]] = phi <2 x i32> [ poison, [[BB2:%.*]] ], [ zeroinitializer, [[BB1:%.*]] ] +; CHECK-NEXT: [[TMP0:%.*]] = phi <2 x i32> [ undef, [[BB2:%.*]] ], [ zeroinitializer, [[BB1:%.*]] ] ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <4 x i32> ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <8 x i32> zeroinitializer ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> [[TMP1]]) diff --git a/llvm/test/Transforms/SLPVectorizer/X86/unreachable.ll b/llvm/test/Transforms/SLPVectorizer/X86/unreachable.ll --- a/llvm/test/Transforms/SLPVectorizer/X86/unreachable.ll +++ b/llvm/test/Transforms/SLPVectorizer/X86/unreachable.ll @@ -15,7 +15,7 @@ ; CHECK-NEXT: [[BAD:%.*]] = fadd float [[BAD]], 0.000000e+00 ; CHECK-NEXT: br label [[BB2]] ; CHECK: bb2: -; CHECK-NEXT: [[TMP0:%.*]] = phi <4 x i32> [ poison, [[BB1:%.*]] ], [ , [[ENTRY:%.*]] ] +; CHECK-NEXT: [[TMP0:%.*]] = phi <4 x i32> [ undef, [[BB1:%.*]] ], [ , [[ENTRY:%.*]] ] ; CHECK-NEXT: [[TMP1:%.*]] = bitcast i32* [[X:%.*]] to <4 x i32>* ; CHECK-NEXT: store <4 x i32> [[TMP0]], <4 x i32>* [[TMP1]], align 4 ; CHECK-NEXT: ret void