mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 16:56:50 +00:00
Rename LoopInfo::Analyze() to LoopInfo::analyze() and turn its parameter type to const&.
The benefit of turning the parameter of LoopInfo::analyze() to const& is that it now can accept a rvalue. http://reviews.llvm.org/D11250 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242426 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4a6d99b0a9
commit
204b59072d
@ -622,7 +622,7 @@ public:
|
||||
}
|
||||
|
||||
/// Create the loop forest using a stable algorithm.
|
||||
void Analyze(DominatorTreeBase<BlockT> &DomTree);
|
||||
void analyze(const DominatorTreeBase<BlockT> &DomTree);
|
||||
|
||||
// Debugging
|
||||
void print(raw_ostream &OS) const;
|
||||
|
@ -345,7 +345,7 @@ void LoopBase<BlockT, LoopT>::print(raw_ostream &OS, unsigned Depth) const {
|
||||
template<class BlockT, class LoopT>
|
||||
static void discoverAndMapSubloop(LoopT *L, ArrayRef<BlockT*> Backedges,
|
||||
LoopInfoBase<BlockT, LoopT> *LI,
|
||||
DominatorTreeBase<BlockT> &DomTree) {
|
||||
const DominatorTreeBase<BlockT> &DomTree) {
|
||||
typedef GraphTraits<Inverse<BlockT*> > InvBlockTraits;
|
||||
|
||||
unsigned NumBlocks = 0;
|
||||
@ -468,10 +468,10 @@ void PopulateLoopsDFS<BlockT, LoopT>::insertIntoLoop(BlockT *Block) {
|
||||
/// insertions per block.
|
||||
template<class BlockT, class LoopT>
|
||||
void LoopInfoBase<BlockT, LoopT>::
|
||||
Analyze(DominatorTreeBase<BlockT> &DomTree) {
|
||||
analyze(const DominatorTreeBase<BlockT> &DomTree) {
|
||||
|
||||
// Postorder traversal of the dominator tree.
|
||||
DomTreeNodeBase<BlockT>* DomRoot = DomTree.getRootNode();
|
||||
const DomTreeNodeBase<BlockT> *DomRoot = DomTree.getRootNode();
|
||||
for (auto DomNode : post_order(DomRoot)) {
|
||||
|
||||
BlockT *Header = DomNode->getBlock();
|
||||
|
@ -263,6 +263,21 @@ template <> struct GraphTraits<MachineDomTreeNode *> {
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<const MachineDomTreeNode *> {
|
||||
typedef const MachineDomTreeNode NodeType;
|
||||
typedef NodeType::const_iterator ChildIteratorType;
|
||||
|
||||
static NodeType *getEntryNode(NodeType *N) {
|
||||
return N;
|
||||
}
|
||||
static inline ChildIteratorType child_begin(NodeType* N) {
|
||||
return N->begin();
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType* N) {
|
||||
return N->end();
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<MachineDominatorTree*>
|
||||
: public GraphTraits<MachineDomTreeNode *> {
|
||||
static NodeType *getEntryNode(MachineDominatorTree *DT) {
|
||||
|
@ -147,6 +147,31 @@ template <> struct GraphTraits<DomTreeNode*> {
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<const DomTreeNode *> {
|
||||
typedef const DomTreeNode NodeType;
|
||||
typedef NodeType::const_iterator ChildIteratorType;
|
||||
|
||||
static NodeType *getEntryNode(NodeType *N) {
|
||||
return N;
|
||||
}
|
||||
static inline ChildIteratorType child_begin(NodeType *N) {
|
||||
return N->begin();
|
||||
}
|
||||
static inline ChildIteratorType child_end(NodeType *N) {
|
||||
return N->end();
|
||||
}
|
||||
|
||||
typedef df_iterator<const DomTreeNode *> nodes_iterator;
|
||||
|
||||
static nodes_iterator nodes_begin(const DomTreeNode *N) {
|
||||
return df_begin(getEntryNode(N));
|
||||
}
|
||||
|
||||
static nodes_iterator nodes_end(const DomTreeNode *N) {
|
||||
return df_end(getEntryNode(N));
|
||||
}
|
||||
};
|
||||
|
||||
template <> struct GraphTraits<DominatorTree*>
|
||||
: public GraphTraits<DomTreeNode*> {
|
||||
static NodeType *getEntryNode(DominatorTree *DT) {
|
||||
|
@ -675,7 +675,7 @@ LoopInfo LoopAnalysis::run(Function &F, AnalysisManager<Function> *AM) {
|
||||
// objects. I don't want to add that kind of complexity until the scope of
|
||||
// the problem is better understood.
|
||||
LoopInfo LI;
|
||||
LI.Analyze(AM->getResult<DominatorTreeAnalysis>(F));
|
||||
LI.analyze(AM->getResult<DominatorTreeAnalysis>(F));
|
||||
return LI;
|
||||
}
|
||||
|
||||
@ -698,7 +698,7 @@ INITIALIZE_PASS_END(LoopInfoWrapperPass, "loops", "Natural Loop Information",
|
||||
|
||||
bool LoopInfoWrapperPass::runOnFunction(Function &) {
|
||||
releaseMemory();
|
||||
LI.Analyze(getAnalysis<DominatorTreeWrapperPass>().getDomTree());
|
||||
LI.analyze(getAnalysis<DominatorTreeWrapperPass>().getDomTree());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ char &llvm::MachineLoopInfoID = MachineLoopInfo::ID;
|
||||
|
||||
bool MachineLoopInfo::runOnMachineFunction(MachineFunction &) {
|
||||
releaseMemory();
|
||||
LI.Analyze(getAnalysis<MachineDominatorTree>().getBase());
|
||||
LI.analyze(getAnalysis<MachineDominatorTree>().getBase());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user