[dom] The formatting of the generic domtree has bitrotted over the years

significantly. Clean it up with the help of clang-format.

I've touched this up by hand in a couple of places that weren't quite
right (IMO). I think most of these actually have bugs open about
already.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225938 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2015-01-14 03:56:00 +00:00
parent 3abe6ea44a
commit 35854cb40b

View File

@ -31,15 +31,14 @@ namespace llvm {
/// \brief Base class that other, more interesting dominator analyses
/// inherit from.
template <class NodeT>
class DominatorBase {
template <class NodeT> class DominatorBase {
protected:
std::vector<NodeT *> Roots;
const bool IsPostDominators;
inline explicit DominatorBase(bool isPostDom) :
Roots(), IsPostDominators(isPostDom) {}
public:
inline explicit DominatorBase(bool isPostDom)
: Roots(), IsPostDominators(isPostDom) {}
public:
/// getRoots - Return the root blocks of the current CFG. This may include
/// multiple blocks if we are computing post dominators. For forward
/// dominators, this will always be a single block (the entry node).
@ -51,13 +50,11 @@ public:
bool isPostDominator() const { return IsPostDominators; }
};
template <class NodeT> class DominatorTreeBase;
struct PostDominatorTree;
/// \brief Base class for the actual dominator tree node.
template <class NodeT>
class DomTreeNodeBase {
template <class NodeT> class DomTreeNodeBase {
NodeT *TheBB;
DomTreeNodeBase<NodeT> *IDom;
std::vector<DomTreeNodeBase<NodeT> *> Children;
@ -65,6 +62,7 @@ class DomTreeNodeBase {
template <class N> friend class DominatorTreeBase;
friend struct PostDominatorTree;
public:
typedef typename std::vector<DomTreeNodeBase<NodeT> *>::iterator iterator;
typedef typename std::vector<DomTreeNodeBase<NodeT> *>::const_iterator
@ -89,13 +87,9 @@ public:
return C;
}
size_t getNumChildren() const {
return Children.size();
}
size_t getNumChildren() const { return Children.size(); }
void clearAllChildren() {
Children.clear();
}
void clearAllChildren() { Children.clear(); }
bool compare(const DomTreeNodeBase<NodeT> *Other) const {
if (getNumChildren() != Other->getNumChildren())
@ -135,6 +129,7 @@ public:
/// not call them.
unsigned getDFSNumIn() const { return DFSNumIn; }
unsigned getDFSNumOut() const { return DFSNumOut; }
private:
// Return true if this node is dominated by other. Use this only if DFS info
// is valid.
@ -162,7 +157,8 @@ inline void PrintDomTree(const DomTreeNodeBase<NodeT> *N, raw_ostream &o,
unsigned Lev) {
o.indent(2 * Lev) << "[" << Lev << "] " << N;
for (typename DomTreeNodeBase<NodeT>::const_iterator I = N->begin(),
E = N->end(); I != E; ++I)
E = N->end();
I != E; ++I)
PrintDomTree<NodeT>(*I, o, Lev + 1);
}
@ -175,8 +171,7 @@ void Calculate(DominatorTreeBase<typename GraphTraits<N>::NodeType>& DT,
///
/// This class is a generic template over graph nodes. It is instantiated for
/// various graphs in the LLVM IR or in the code generator.
template<class NodeT>
class DominatorTreeBase : public DominatorBase<NodeT> {
template <class NodeT> class DominatorTreeBase : public DominatorBase<NodeT> {
bool dominatedBySlowTreeWalk(const DomTreeNodeBase<NodeT> *A,
const DomTreeNodeBase<NodeT> *B) const {
assert(A != B);
@ -216,7 +211,8 @@ protected:
void reset() {
for (typename DomTreeNodeMapType::iterator I = this->DomTreeNodes.begin(),
E = DomTreeNodes.end(); I != E; ++I)
E = DomTreeNodes.end();
I != E; ++I)
delete I->second;
DomTreeNodes.clear();
IDoms.clear();
@ -237,17 +233,19 @@ protected:
std::vector<typename GraphT::NodeType *> PredBlocks;
typedef GraphTraits<Inverse<N>> InvTraits;
for (typename InvTraits::ChildIteratorType PI =
InvTraits::child_begin(NewBB),
PE = InvTraits::child_end(NewBB); PI != PE; ++PI)
for (typename InvTraits::ChildIteratorType
PI = InvTraits::child_begin(NewBB),
PE = InvTraits::child_end(NewBB);
PI != PE; ++PI)
PredBlocks.push_back(*PI);
assert(!PredBlocks.empty() && "No predblocks?");
bool NewBBDominatesNewBBSucc = true;
for (typename InvTraits::ChildIteratorType PI =
InvTraits::child_begin(NewBBSucc),
E = InvTraits::child_end(NewBBSucc); PI != E; ++PI) {
for (typename InvTraits::ChildIteratorType
PI = InvTraits::child_begin(NewBBSucc),
E = InvTraits::child_end(NewBBSucc);
PI != E; ++PI) {
typename InvTraits::NodeType *ND = *PI;
if (ND != NewBB && !DT.dominates(NewBBSucc, ND) &&
DT.isReachableFromEntry(ND)) {
@ -303,9 +301,11 @@ public:
for (typename DomTreeNodeMapType::const_iterator
I = this->DomTreeNodes.begin(),
E = this->DomTreeNodes.end(); I != E; ++I) {
E = this->DomTreeNodes.end();
I != E; ++I) {
NodeT *BB = I->first;
typename DomTreeNodeMapType::const_iterator OI = OtherDomTreeNodes.find(BB);
typename DomTreeNodeMapType::const_iterator OI =
OtherDomTreeNodes.find(BB);
if (OI == OtherDomTreeNodes.end())
return true;
@ -563,7 +563,8 @@ public:
/// tree to reflect this change.
void splitBlock(NodeT *NewBB) {
if (this->IsPostDominators)
this->Split<Inverse<NodeT*>, GraphTraits<Inverse<NodeT*> > >(*this, NewBB);
this->Split<Inverse<NodeT *>, GraphTraits<Inverse<NodeT *>>>(*this,
NewBB);
else
this->Split<NodeT *, GraphTraits<NodeT *>>(*this, NewBB);
}
@ -587,19 +588,17 @@ public:
protected:
template <class GraphT>
friend typename GraphT::NodeType* Eval(
DominatorTreeBase<typename GraphT::NodeType>& DT,
typename GraphT::NodeType* V,
unsigned LastLinked);
friend typename GraphT::NodeType *
Eval(DominatorTreeBase<typename GraphT::NodeType> &DT,
typename GraphT::NodeType *V, unsigned LastLinked);
template <class GraphT>
friend unsigned DFSPass(DominatorTreeBase<typename GraphT::NodeType> &DT,
typename GraphT::NodeType* V,
unsigned N);
typename GraphT::NodeType *V, unsigned N);
template <class FuncT, class N>
friend void Calculate(DominatorTreeBase<typename GraphTraits<N>::NodeType>& DT,
FuncT& F);
friend void
Calculate(DominatorTreeBase<typename GraphTraits<N>::NodeType> &DT, FuncT &F);
/// updateDFSNumbers - Assign In and Out numbers to the nodes while walking
/// dominator tree in dfs order.
@ -607,7 +606,8 @@ protected:
unsigned DFSNum = 0;
SmallVector<std::pair<const DomTreeNodeBase<NodeT> *,
typename DomTreeNodeBase<NodeT>::const_iterator>, 32> WorkStack;
typename DomTreeNodeBase<NodeT>::const_iterator>,
32> WorkStack;
const DomTreeNodeBase<NodeT> *ThisRoot = getRootNode();
@ -662,18 +662,13 @@ protected:
return this->DomTreeNodes[BB] = IDomNode->addChild(C);
}
inline NodeT *getIDom(NodeT *BB) const {
return IDoms.lookup(BB);
}
inline NodeT *getIDom(NodeT *BB) const { return IDoms.lookup(BB); }
inline void addRoot(NodeT* BB) {
this->Roots.push_back(BB);
}
inline void addRoot(NodeT *BB) { this->Roots.push_back(BB); }
public:
/// recalculate - compute a dominator tree for the given function
template<class FT>
void recalculate(FT& F) {
template <class FT> void recalculate(FT &F) {
typedef GraphTraits<FT *> TraitsTy;
reset();
this->Vertex.push_back(nullptr);
@ -689,11 +684,13 @@ public:
} else {
// Initialize the roots list
for (typename TraitsTy::nodes_iterator I = TraitsTy::nodes_begin(&F),
E = TraitsTy::nodes_end(&F); I != E; ++I) {
E = TraitsTy::nodes_end(&F);
I != E; ++I) {
if (TraitsTy::child_begin(I) == TraitsTy::child_end(I))
addRoot(I);
// Prepopulate maps so that we don't get iterator invalidation issues later.
// Prepopulate maps so that we don't get iterator invalidation issues
// later.
this->IDoms[I] = nullptr;
this->DomTreeNodes[I] = nullptr;
}
@ -717,8 +714,8 @@ bool DominatorTreeBase<NodeT>::dominates(const NodeT *A, const NodeT *B) const {
getNode(const_cast<NodeT *>(B)));
}
template <class NodeT>
bool
DominatorTreeBase<NodeT>::properlyDominates(const NodeT *A, const NodeT *B) const {
bool DominatorTreeBase<NodeT>::properlyDominates(const NodeT *A,
const NodeT *B) const {
if (A == B)
return false;