Skip to content

Commit 2b4c71f

Browse files
committed
Merge branch 'main' into vplan-runtime-checks
2 parents b4d0eac + a2137b4 commit 2b4c71f

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

llvm/lib/Transforms/Vectorize/VPlan.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4154,6 +4154,21 @@ class VPBlockUtils {
41544154
return cast<BlockTy>(&Block);
41554155
});
41564156
}
4157+
4158+
static void insertOnEdge(VPBlockBase *From, VPBlockBase *To,
4159+
VPBlockBase *BlockPtr) {
4160+
unsigned SuccIdx =
4161+
std::distance(From->getSuccessors().begin(),
4162+
find_if(From->getSuccessors(),
4163+
[To](VPBlockBase *Succ) { return To == Succ; }));
4164+
unsigned PredIx =
4165+
std::distance(To->getPredecessors().begin(),
4166+
find_if(To->getPredecessors(), [From](VPBlockBase *Pred) {
4167+
return From == Pred;
4168+
}));
4169+
VPBlockUtils::connectBlocks(From, BlockPtr, -1, SuccIdx);
4170+
VPBlockUtils::connectBlocks(BlockPtr, To, PredIx, -1);
4171+
}
41574172
};
41584173

41594174
class VPInterleavedAccessInfo {

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,7 @@ static void addReplicateRegions(VPlan &Plan) {
360360
// Record predicated instructions for above packing optimizations.
361361
VPBlockBase *Region = createReplicateRegion(RepR, Plan);
362362
Region->setParent(CurrentBlock->getParent());
363-
VPBlockUtils::disconnectBlocks(CurrentBlock, SplitBlock);
364-
VPBlockUtils::connectBlocks(CurrentBlock, Region);
365-
VPBlockUtils::connectBlocks(Region, SplitBlock);
363+
VPBlockUtils::insertOnEdge(CurrentBlock, SplitBlock, Region);
366364
}
367365
}
368366

0 commit comments

Comments
 (0)