[llvm] [VPlan] Make canonical IV part of the region (PR #156262)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 14 14:18:25 PDT 2026
================
@@ -4377,23 +4337,33 @@ class LLVM_ABI_FOR_TEST VPRegionBlock : public VPBlockBase {
/// VPRegionBlock.
VPBlockBase *Exiting;
- /// An indicator whether this region is to generate multiple replicated
- /// instances of output IR corresponding to its VPBlockBases.
- bool IsReplicator;
+ /// Holds the Canonical IV of the loop region along with additional
+ /// information. If CanIVInfo is nullptr, the region is a replicating region.
+ /// Loop regions retain their canonical IVs until they are dissolved, even if
+ /// the canonical IV has no users.
+ std::unique_ptr<VPCanonicalIVInfo> CanIVInfo;
- /// Use VPlan::createVPRegionBlock to create VPRegionBlocks.
+ /// Use VPlan::createLoopRegion() and VPlan::createReplicateRegion() to create
+ /// VPRegionBlocks.
VPRegionBlock(VPBlockBase *Entry, VPBlockBase *Exiting,
- const std::string &Name = "", bool IsReplicator = false)
- : VPBlockBase(VPRegionBlockSC, Name), Entry(Entry), Exiting(Exiting),
- IsReplicator(IsReplicator) {
- assert(Entry->getPredecessors().empty() && "Entry block has predecessors.");
- assert(Exiting->getSuccessors().empty() && "Exit block has successors.");
- Entry->setParent(this);
- Exiting->setParent(this);
- }
- VPRegionBlock(const std::string &Name = "", bool IsReplicator = false)
- : VPBlockBase(VPRegionBlockSC, Name), Entry(nullptr), Exiting(nullptr),
- IsReplicator(IsReplicator) {}
+ const std::string &Name = "")
+ : VPBlockBase(VPRegionBlockSC, Name), Entry(Entry), Exiting(Exiting) {
+ if (Entry) {
+ assert(Entry->getPredecessors().empty() &&
+ "Entry block has predecessors.");
----------------
fhahn wrote:
done thanks
https://github.com/llvm/llvm-project/pull/156262
More information about the llvm-commits
mailing list