[libcxx-commits] [clang] [libc] [clang-tools-extra] [compiler-rt] [flang] [llvm] [libcxx] [lld] [lldb] [VPlan] Implement cloning of VPlans. (PR #73158)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jan 25 06:42:49 PST 2024
================
@@ -614,6 +614,61 @@ void VPBasicBlock::print(raw_ostream &O, const Twine &Indent,
printSuccessors(O, Indent);
}
#endif
+static void cloneCFG(VPBlockBase *Entry,
+ DenseMap<VPBlockBase *, VPBlockBase *> &Old2NewVPBlocks);
+
+static VPBlockBase *cloneVPB(VPBlockBase *BB) {
+ if (auto *VPBB = dyn_cast<VPBasicBlock>(BB)) {
+ auto *NewBlock = new VPBasicBlock(VPBB->getName());
+ for (VPRecipeBase &R : *VPBB)
+ NewBlock->appendRecipe(R.clone());
+ return NewBlock;
+ }
+
+ auto *VPR = cast<VPRegionBlock>(BB);
+ DenseMap<VPBlockBase *, VPBlockBase *> Old2NewVPBlocks;
+ DenseMap<VPValue *, VPValue *> Old2NewVPValues;
----------------
ayalz wrote:
Is `Old2NewVPValues` needed here?
Hopefully `Old2NewVPBlocks` will not be needed either, doing instead something like:
```
auto [NewEntry, NewExiting] = cloneSESE(VPR->getEntry());
```
https://github.com/llvm/llvm-project/pull/73158
More information about the libcxx-commits
mailing list