[PATCH] D13725: [IDFCalculator] Use DominatorTreeBase instead of DominatorTree

Victor Campos via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 14 07:00:00 PDT 2015


vhscampos created this revision.
vhscampos added a reviewer: dberlin.
vhscampos added a subscriber: llvm-commits.

IDFCalculator used a DominatorTree instance for its calculations. Since the PostDominatorTree struct is not a subclass of DominatorTree, it wasn't possible to use PDT in IDFCalculator to compute post-dominance frontiers.

This patch makes IDFCalculator work with a DominatorTreeBase<BasicBlock> instead, which enables PDTs to be utilized.

http://reviews.llvm.org/D13725

Files:
  include/llvm/Analysis/IteratedDominanceFrontier.h

Index: include/llvm/Analysis/IteratedDominanceFrontier.h
===================================================================
--- include/llvm/Analysis/IteratedDominanceFrontier.h
+++ include/llvm/Analysis/IteratedDominanceFrontier.h
@@ -34,7 +34,7 @@
 class BasicBlock;
 template <class T> class DomTreeNodeBase;
 typedef DomTreeNodeBase<BasicBlock> DomTreeNode;
-class DominatorTree;
+template <class T> class DominatorTreeBase;
 
 /// \brief Determine the iterated dominance frontier, given a set of defining
 /// blocks, and optionally, a set of live-in blocks.
@@ -47,7 +47,7 @@
 class IDFCalculator {
 
 public:
-  IDFCalculator(DominatorTree &DT) : DT(DT), useLiveIn(false) {}
+  IDFCalculator(DominatorTreeBase<BasicBlock> &DT) : DT(DT), useLiveIn(false) {}
 
   /// \brief Give the IDF calculator the set of blocks in which the value is
   /// defined.  This is equivalent to the set of starting blocks it should be
@@ -85,7 +85,7 @@
   void calculate(SmallVectorImpl<BasicBlock *> &IDFBlocks);
 
 private:
-  DominatorTree &DT;
+  DominatorTreeBase<BasicBlock> &DT;
   bool useLiveIn;
   DenseMap<DomTreeNode *, unsigned> DomLevels;
   const SmallPtrSetImpl<BasicBlock *> *LiveInBlocks;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D13725.37347.patch
Type: text/x-patch
Size: 1196 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151014/b3a78f4c/attachment.bin>


More information about the llvm-commits mailing list