Skip to content

Commit d62a423

Browse files
committed
!fixup address latest comments, thanks!
1 parent a31d786 commit d62a423

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

llvm/lib/Transforms/Vectorize/VPlan.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1961,7 +1961,7 @@ class VPScalarPHIRecipe : public VPHeaderPHIRecipe {
19611961
/// A recipe for widened phis. Incoming values are operands of the recipe and
19621962
/// their operand index corresponds to the incoming predeocessor block. If the
19631963
/// recipe is placed in an entry block to a (non-replicate) region, it must have
1964-
/// exactly 2 incoming values, from from the predecessors of the region and one
1964+
/// exactly 2 incoming values, the first from the predecessors of the region and the second
19651965
/// from the exiting block of the region.
19661966
class VPWidenPHIRecipe : public VPSingleDefRecipe {
19671967
public:

llvm/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,13 @@ void PlainCFGBuilder::fixPhiNodes() {
145145
}
146146

147147
// Add operands for VPPhi in the order matching its predecessors in VPlan.
148-
DenseMap<const VPBasicBlock *, VPValue *> IncomingValues;
148+
DenseMap<const VPBasicBlock *, VPValue *> VPPredToIncomingValue;
149149
for (unsigned I = 0; I != Phi->getNumOperands(); ++I) {
150-
IncomingValues[BB2VPBB[Phi->getIncomingBlock(I)]] =
150+
VPPredToIncomingValue[BB2VPBB[Phi->getIncomingBlock(I)]] =
151151
getOrCreateVPOperand(Phi->getIncomingValue(I));
152152
}
153153
for (VPBlockBase *Pred : VPPhi->getParent()->getPredecessors())
154-
VPPhi->addOperand(IncomingValues.lookup(Pred->getExitingBasicBlock()));
154+
VPPhi->addOperand(VPPredToIncomingValue.lookup(Pred->getExitingBasicBlock()));
155155
}
156156
}
157157

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3607,10 +3607,12 @@ VPBasicBlock *VPWidenPHIRecipe::getIncomingBlock(unsigned I) {
36073607
VPBasicBlock *Parent = getParent();
36083608
VPBlockBase *Pred = nullptr;
36093609
if (Parent->getNumPredecessors() == 0) {
3610-
auto *R = Parent->getParent();
3611-
assert(R && R->getEntry() == Parent);
3612-
assert(I < 2);
3613-
Pred = I == 0 ? R->getSinglePredecessor() : R;
3610+
auto *Region = Parent->getParent();
3611+
assert(Region && !Region->isReplicator() && Region->getEntry() == Parent && "must be in the entry block of a non-replicate region");
3612+
assert(I < 2 && getNumOperands() == 2 && "when placed in an entry block, only 2 incoming blocks are available");
3613+
3614+
// I == 0 selects the predecessor of the region, I == 1 selects the region itself whose exiting block feeds the phi across the backedge.
3615+
Pred = I == 0 ? Region->getSinglePredecessor() : Region;
36143616
} else {
36153617
Pred = Parent->getPredecessors()[I];
36163618
}

0 commit comments

Comments
 (0)