Recommit "[VPlan] Remove uneeded needsVectorIV check."
This reverts commit 266ea446ab747671eb6c736569c3c9c5f3c53d11. The reasons for the revert have been addressed by cleaning up condition handling in VPlan and properly marking VPBranchOnMaskRecipe as using scalars. The test case for the revert from D123720 has been added in 3d663308a5d.
This commit is contained in:
parent
98d4f0651a
commit
cedfd7a2e5
@ -1614,6 +1614,13 @@ public:
|
||||
// Mask is optional.
|
||||
return getNumOperands() == 1 ? getOperand(0) : nullptr;
|
||||
}
|
||||
|
||||
/// Returns true if the recipe uses scalars of operand \p Op.
|
||||
bool usesScalars(const VPValue *Op) const override {
|
||||
assert(is_contained(operands(), Op) &&
|
||||
"Op must be an operand of the recipe");
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
/// VPPredInstPHIRecipe is a recipe for generating the phi nodes needed when
|
||||
|
||||
@ -392,15 +392,8 @@ void VPlanTransforms::optimizeInductions(VPlan &Plan, ScalarEvolution &SE) {
|
||||
IV->getStartValue(), Step, TruncI ? TruncI->getType() : nullptr);
|
||||
HeaderVPBB->insert(Steps, HeaderVPBB->getFirstNonPhi());
|
||||
|
||||
// If there are no vector users of IV, simply update all users to use Step
|
||||
// instead.
|
||||
if (!IV->needsVectorIV()) {
|
||||
IV->replaceAllUsesWith(Steps);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Otherwise only update scalar users of IV to use Step instead. Use
|
||||
// SetVector to ensure the list of users doesn't contain duplicates.
|
||||
// Update scalar users of IV to use Step instead. Use SetVector to ensure
|
||||
// the list of users doesn't contain duplicates.
|
||||
SetVector<VPUser *> Users(IV->user_begin(), IV->user_end());
|
||||
for (VPUser *U : Users) {
|
||||
if (!U->usesScalars(IV))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user