[llvm] 7305798 - [VPlan] Remove VPWidenPHIRecipe constructor without start value (NFC).
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 1 05:54:17 PST 2022
Author: Florian Hahn
Date: 2022-01-01T13:53:48Z
New Revision: 7305798049112496323773335a503b694ff36e5b
URL: https://github.com/llvm/llvm-project/commit/7305798049112496323773335a503b694ff36e5b
DIFF: https://github.com/llvm/llvm-project/commit/7305798049112496323773335a503b694ff36e5b.diff
LOG: [VPlan] Remove VPWidenPHIRecipe constructor without start value (NFC).
This was suggested as a separate cleanup in recent reviews.
Added:
Modified:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/lib/Transforms/Vectorize/VPlan.h
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 828f1f3e107b3..4b588109bcdae 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -4612,7 +4612,7 @@ void InnerLoopVectorizer::widenPHIInstruction(Instruction *PN,
Type *PhiType = II.getStep()->getType();
// Build a pointer phi
- Value *ScalarStartValue = II.getStartValue();
+ Value *ScalarStartValue = PhiR->getStartValue()->getLiveInIRValue();
Type *ScStValueType = ScalarStartValue->getType();
PHINode *NewPointerPhi =
PHINode::Create(ScStValueType, 2, "pointer.phi", Induction);
@@ -8874,11 +8874,14 @@ VPRecipeBuilder::tryToCreateWidenRecipe(Instruction *Instr,
Phi->getIncomingValueForBlock(OrigLoop->getLoopLatch())));
PhisToFix.push_back(PhiRecipe);
} else {
- // TODO: record start and backedge value for remaining pointer induction
- // phis.
+ // TODO: record backedge value for remaining pointer induction phis.
assert(Phi->getType()->isPointerTy() &&
"only pointer phis should be handled here");
- PhiRecipe = new VPWidenPHIRecipe(Phi);
+ assert(Legal->getInductionVars().count(Phi) &&
+ "Not an induction variable");
+ InductionDescriptor II = Legal->getInductionVars().lookup(Phi);
+ VPValue *Start = Plan->getOrAddVPValue(II.getStartValue());
+ PhiRecipe = new VPWidenPHIRecipe(Phi, Start);
}
return toVPRecipeResult(PhiRecipe);
diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h
index 96de9114b618c..a8102c0b07b88 100644
--- a/llvm/lib/Transforms/Vectorize/VPlan.h
+++ b/llvm/lib/Transforms/Vectorize/VPlan.h
@@ -1118,13 +1118,11 @@ class VPWidenPHIRecipe : public VPHeaderPHIRecipe {
SmallVector<VPBasicBlock *, 2> IncomingBlocks;
public:
- /// Create a VPWidenPHIRecipe for \p Phi
- VPWidenPHIRecipe(PHINode *Phi)
- : VPHeaderPHIRecipe(VPVWidenPHISC, VPWidenPHISC, Phi) {}
-
/// Create a new VPWidenPHIRecipe for \p Phi with start value \p Start.
- VPWidenPHIRecipe(PHINode *Phi, VPValue &Start) : VPWidenPHIRecipe(Phi) {
- addOperand(&Start);
+ VPWidenPHIRecipe(PHINode *Phi, VPValue *Start = nullptr)
+ : VPHeaderPHIRecipe(VPVWidenPHISC, VPWidenPHISC, Phi) {
+ if (Start)
+ addOperand(Start);
}
~VPWidenPHIRecipe() override = default;
More information about the llvm-commits
mailing list