[PATCH] D51980: [GVNHoist] computeInsertionPoints() miscalculates the Iterated Dominance Frontiers

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 12 07:29:48 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL342055: [GVNHoist] computeInsertionPoints() miscalculates IDF (authored by alelab01, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D51980?vs=165071&id=165087#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D51980

Files:
  llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp


Index: llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp
+++ llvm/trunk/lib/Transforms/Scalar/GVNHoist.cpp
@@ -155,7 +155,6 @@
 
 using CHIIt = SmallVectorImpl<CHIArg>::iterator;
 using CHIArgs = iterator_range<CHIIt>;
-using CHICache = DenseMap<BasicBlock *, SmallPtrSet<Instruction *, 4>>;
 using OutValuesType = DenseMap<BasicBlock *, SmallVector<CHIArg, 2>>;
 using InValuesType =
     DenseMap<BasicBlock *, SmallVector<std::pair<VNType, Instruction *>, 2>>;
@@ -767,7 +766,6 @@
     ReverseIDFCalculator IDFs(*PDT);
     OutValuesType OutValue;
     InValuesType InValue;
-    CHICache CachedCHIs;
     for (const auto &R : Ranks) {
       const SmallVecInsn &V = Map.lookup(R);
       if (V.size() < 2)
@@ -786,6 +784,7 @@
       // which currently have dead terminators that are control
       // dependence sources of a block which is in NewLiveBlocks.
       IDFs.setDefiningBlocks(VNBlocks);
+      IDFBlocks.clear();
       IDFs.calculate(IDFBlocks);
 
       // Make a map of BB vs instructions to be hoisted.
@@ -798,8 +797,7 @@
         for (unsigned i = 0; i < V.size(); ++i) {
           CHIArg C = {VN, nullptr, nullptr};
            // Ignore spurious PDFs.
-          if (DT->properlyDominates(IDFB, V[i]->getParent()) &&
-              CachedCHIs[IDFB].insert(V[i]).second) {
+          if (DT->properlyDominates(IDFB, V[i]->getParent())) {
             OutValue[IDFB].push_back(C);
             LLVM_DEBUG(dbgs() << "\nInsertion a CHI for BB: " << IDFB->getName()
                               << ", for Insn: " << *V[i]);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51980.165087.patch
Type: text/x-patch
Size: 1660 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180912/fff62bb3/attachment.bin>


More information about the llvm-commits mailing list