diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/ADT/GraphTraits.h | 5 | ||||
| -rw-r--r-- | llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h | 2 | ||||
| -rw-r--r-- | llvm/include/llvm/Analysis/CallGraph.h | 10 | ||||
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineFunction.h | 16 | ||||
| -rw-r--r-- | llvm/include/llvm/CodeGen/ScheduleDAG.h | 6 | ||||
| -rw-r--r-- | llvm/include/llvm/CodeGen/SelectionDAG.h | 6 | ||||
| -rw-r--r-- | llvm/include/llvm/IR/CFG.h | 20 | ||||
| -rw-r--r-- | llvm/include/llvm/Support/GenericDomTree.h | 4 | ||||
| -rw-r--r-- | llvm/include/llvm/Support/GraphWriter.h | 12 | ||||
| -rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfo.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp | 8 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Scalar/NaryReassociate.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp | 2 | ||||
| -rw-r--r-- | llvm/unittests/Analysis/CallGraphTest.cpp | 6 |
16 files changed, 59 insertions, 54 deletions
diff --git a/llvm/include/llvm/ADT/GraphTraits.h b/llvm/include/llvm/ADT/GraphTraits.h index b1a4028c147..7ca0134f0e6 100644 --- a/llvm/include/llvm/ADT/GraphTraits.h +++ b/llvm/include/llvm/ADT/GraphTraits.h @@ -34,7 +34,8 @@ struct GraphTraits { // // typedef NodeType - Type of Node in the graph // typedef NodeRef - NodeType * - // typedef ChildIteratorType - Type used to iterate over children in graph + // typedef ChildIteratorType - Type used to iterate over children in graph, + // dereference to a NodeRef // static NodeRef getEntryNode(const GraphType &) // Return the entry node of the graph @@ -45,7 +46,7 @@ struct GraphTraits { // node list for the specified node. // - // typedef ...iterator nodes_iterator; + // typedef ...iterator nodes_iterator; - dereference to a NodeRef // static nodes_iterator nodes_begin(GraphType *G) // static nodes_iterator nodes_end (GraphType *G) // nodes_iterator/begin/end - Allow iteration over all nodes in the graph diff --git a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h index 0f0f3314f06..3f4428d1874 100644 --- a/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h +++ b/llvm/include/llvm/Analysis/BlockFrequencyInfoImpl.h @@ -1271,7 +1271,7 @@ struct BFIDOTGraphTraitsBase : public DefaultDOTGraphTraits { for (NodeIter I = GTraits::nodes_begin(Graph), E = GTraits::nodes_end(Graph); I != E; ++I) { - NodeRef N = &*I; + NodeRef N = *I; MaxFrequency = std::max(MaxFrequency, Graph->getBlockFreq(N).getFrequency()); } diff --git a/llvm/include/llvm/Analysis/CallGraph.h b/llvm/include/llvm/Analysis/CallGraph.h index 2346ef7c96c..9ea22a2e736 100644 --- a/llvm/include/llvm/Analysis/CallGraph.h +++ b/llvm/include/llvm/Analysis/CallGraph.h @@ -460,7 +460,7 @@ struct GraphTraits<CallGraph *> : public GraphTraits<CallGraphNode *> { } typedef std::pair<const Function *const, std::unique_ptr<CallGraphNode>> PairTy; - typedef std::pointer_to_unary_function<const PairTy &, CallGraphNode &> + typedef std::pointer_to_unary_function<const PairTy &, CallGraphNode *> DerefFun; // nodes_iterator/begin/end - Allow iteration over all nodes in the graph @@ -472,7 +472,7 @@ struct GraphTraits<CallGraph *> : public GraphTraits<CallGraphNode *> { return map_iterator(CG->end(), DerefFun(CGdereference)); } - static CallGraphNode &CGdereference(const PairTy &P) { return *P.second; } + static CallGraphNode *CGdereference(const PairTy &P) { return P.second.get(); } }; template <> @@ -483,7 +483,7 @@ struct GraphTraits<const CallGraph *> : public GraphTraits< } typedef std::pair<const Function *const, std::unique_ptr<CallGraphNode>> PairTy; - typedef std::pointer_to_unary_function<const PairTy &, const CallGraphNode &> + typedef std::pointer_to_unary_function<const PairTy &, const CallGraphNode *> DerefFun; // nodes_iterator/begin/end - Allow iteration over all nodes in the graph @@ -495,8 +495,8 @@ struct GraphTraits<const CallGraph *> : public GraphTraits< return map_iterator(CG->end(), DerefFun(CGdereference)); } - static const CallGraphNode &CGdereference(const PairTy &P) { - return *P.second; + static const CallGraphNode *CGdereference(const PairTy &P) { + return P.second.get(); } }; diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h index 533d659d78b..b34978550f1 100644 --- a/llvm/include/llvm/CodeGen/MachineFunction.h +++ b/llvm/include/llvm/CodeGen/MachineFunction.h @@ -625,9 +625,13 @@ template <> struct GraphTraits<MachineFunction*> : } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef MachineFunction::iterator nodes_iterator; - static nodes_iterator nodes_begin(MachineFunction *F) { return F->begin(); } - static nodes_iterator nodes_end (MachineFunction *F) { return F->end(); } + typedef pointer_iterator<MachineFunction::iterator> nodes_iterator; + static nodes_iterator nodes_begin(MachineFunction *F) { + return nodes_iterator(F->begin()); + } + static nodes_iterator nodes_end(MachineFunction *F) { + return nodes_iterator(F->end()); + } static unsigned size (MachineFunction *F) { return F->size(); } }; template <> struct GraphTraits<const MachineFunction*> : @@ -637,12 +641,12 @@ template <> struct GraphTraits<const MachineFunction*> : } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef MachineFunction::const_iterator nodes_iterator; + typedef pointer_iterator<MachineFunction::const_iterator> nodes_iterator; static nodes_iterator nodes_begin(const MachineFunction *F) { - return F->begin(); + return nodes_iterator(F->begin()); } static nodes_iterator nodes_end (const MachineFunction *F) { - return F->end(); + return nodes_iterator(F->end()); } static unsigned size (const MachineFunction *F) { return F->size(); diff --git a/llvm/include/llvm/CodeGen/ScheduleDAG.h b/llvm/include/llvm/CodeGen/ScheduleDAG.h index 03a99c305be..f4e7123d88a 100644 --- a/llvm/include/llvm/CodeGen/ScheduleDAG.h +++ b/llvm/include/llvm/CodeGen/ScheduleDAG.h @@ -692,12 +692,12 @@ namespace llvm { }; template <> struct GraphTraits<ScheduleDAG*> : public GraphTraits<SUnit*> { - typedef std::vector<SUnit>::iterator nodes_iterator; + typedef pointer_iterator<std::vector<SUnit>::iterator> nodes_iterator; static nodes_iterator nodes_begin(ScheduleDAG *G) { - return G->SUnits.begin(); + return nodes_iterator(G->SUnits.begin()); } static nodes_iterator nodes_end(ScheduleDAG *G) { - return G->SUnits.end(); + return nodes_iterator(G->SUnits.end()); } }; diff --git a/llvm/include/llvm/CodeGen/SelectionDAG.h b/llvm/include/llvm/CodeGen/SelectionDAG.h index 8a89249e92a..e6d71a7be5c 100644 --- a/llvm/include/llvm/CodeGen/SelectionDAG.h +++ b/llvm/include/llvm/CodeGen/SelectionDAG.h @@ -1416,12 +1416,12 @@ private: }; template <> struct GraphTraits<SelectionDAG*> : public GraphTraits<SDNode*> { - typedef SelectionDAG::allnodes_iterator nodes_iterator; + typedef pointer_iterator<SelectionDAG::allnodes_iterator> nodes_iterator; static nodes_iterator nodes_begin(SelectionDAG *G) { - return G->allnodes_begin(); + return nodes_iterator(G->allnodes_begin()); } static nodes_iterator nodes_end(SelectionDAG *G) { - return G->allnodes_end(); + return nodes_iterator(G->allnodes_end()); } }; diff --git a/llvm/include/llvm/IR/CFG.h b/llvm/include/llvm/IR/CFG.h index a256b5960bb..6e31cdc9338 100644 --- a/llvm/include/llvm/IR/CFG.h +++ b/llvm/include/llvm/IR/CFG.h @@ -229,9 +229,13 @@ template <> struct GraphTraits<Function*> : public GraphTraits<BasicBlock*> { static NodeType *getEntryNode(Function *F) { return &F->getEntryBlock(); } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef Function::iterator nodes_iterator; - static nodes_iterator nodes_begin(Function *F) { return F->begin(); } - static nodes_iterator nodes_end (Function *F) { return F->end(); } + typedef pointer_iterator<Function::iterator> nodes_iterator; + static nodes_iterator nodes_begin(Function *F) { + return nodes_iterator(F->begin()); + } + static nodes_iterator nodes_end(Function *F) { + return nodes_iterator(F->end()); + } static size_t size (Function *F) { return F->size(); } }; template <> struct GraphTraits<const Function*> : @@ -239,9 +243,13 @@ template <> struct GraphTraits<const Function*> : static NodeType *getEntryNode(const Function *F) {return &F->getEntryBlock();} // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef Function::const_iterator nodes_iterator; - static nodes_iterator nodes_begin(const Function *F) { return F->begin(); } - static nodes_iterator nodes_end (const Function *F) { return F->end(); } + typedef pointer_iterator<Function::const_iterator> nodes_iterator; + static nodes_iterator nodes_begin(const Function *F) { + return nodes_iterator(F->begin()); + } + static nodes_iterator nodes_end(const Function *F) { + return nodes_iterator(F->end()); + } static size_t size (const Function *F) { return F->size(); } }; diff --git a/llvm/include/llvm/Support/GenericDomTree.h b/llvm/include/llvm/Support/GenericDomTree.h index 6cbcac86b85..07a53438085 100644 --- a/llvm/include/llvm/Support/GenericDomTree.h +++ b/llvm/include/llvm/Support/GenericDomTree.h @@ -750,8 +750,8 @@ public: for (typename TraitsTy::nodes_iterator I = TraitsTy::nodes_begin(&F), E = TraitsTy::nodes_end(&F); I != E; ++I) - if (TraitsTy::child_begin(&*I) == TraitsTy::child_end(&*I)) - addRoot(&*I); + if (TraitsTy::child_begin(*I) == TraitsTy::child_end(*I)) + addRoot(*I); Calculate<FT, Inverse<NodeT *>>(*this, F); } diff --git a/llvm/include/llvm/Support/GraphWriter.h b/llvm/include/llvm/Support/GraphWriter.h index ace4328b409..7555d5b31a8 100644 --- a/llvm/include/llvm/Support/GraphWriter.h +++ b/llvm/include/llvm/Support/GraphWriter.h @@ -145,22 +145,14 @@ public: // Loop over the graph, printing it out... for (node_iterator I = GTraits::nodes_begin(G), E = GTraits::nodes_end(G); I != E; ++I) - if (!isNodeHidden(&*I)) - writeNode(&*I); - } - - bool isNodeHidden(NodeRef const *Node) { - return isNodeHidden(*Node); + if (!isNodeHidden(*I)) + writeNode(*I); } bool isNodeHidden(NodeRef Node) { return DTraits.isNodeHidden(Node); } - void writeNode(NodeRef const *Node) { - writeNode(*Node); - } - void writeNode(NodeRef Node) { std::string NodeAttributes = DTraits.getNodeAttributes(Node, G); diff --git a/llvm/lib/Analysis/BlockFrequencyInfo.cpp b/llvm/lib/Analysis/BlockFrequencyInfo.cpp index 600f945a8b2..a20c8fb280d 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfo.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfo.cpp @@ -63,7 +63,7 @@ struct GraphTraits<BlockFrequencyInfo *> { typedef const BasicBlock NodeType; typedef const BasicBlock *NodeRef; typedef succ_const_iterator ChildIteratorType; - typedef Function::const_iterator nodes_iterator; + typedef pointer_iterator<Function::const_iterator> nodes_iterator; static inline const NodeType *getEntryNode(const BlockFrequencyInfo *G) { return &G->getFunction()->front(); @@ -75,10 +75,10 @@ struct GraphTraits<BlockFrequencyInfo *> { return succ_end(N); } static nodes_iterator nodes_begin(const BlockFrequencyInfo *G) { - return G->getFunction()->begin(); + return nodes_iterator(G->getFunction()->begin()); } static nodes_iterator nodes_end(const BlockFrequencyInfo *G) { - return G->getFunction()->end(); + return nodes_iterator(G->getFunction()->end()); } }; diff --git a/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp b/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp index 22d47fe1443..4147e5e1bb6 100644 --- a/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp +++ b/llvm/lib/CodeGen/MachineBlockFrequencyInfo.cpp @@ -55,7 +55,7 @@ template <> struct GraphTraits<MachineBlockFrequencyInfo *> { typedef const MachineBasicBlock NodeType; typedef const MachineBasicBlock *NodeRef; typedef MachineBasicBlock::const_succ_iterator ChildIteratorType; - typedef MachineFunction::const_iterator nodes_iterator; + typedef pointer_iterator<MachineFunction::const_iterator> nodes_iterator; static inline const NodeType * getEntryNode(const MachineBlockFrequencyInfo *G) { @@ -71,11 +71,11 @@ template <> struct GraphTraits<MachineBlockFrequencyInfo *> { } static nodes_iterator nodes_begin(const MachineBlockFrequencyInfo *G) { - return G->getFunction()->begin(); + return nodes_iterator(G->getFunction()->begin()); } static nodes_iterator nodes_end(const MachineBlockFrequencyInfo *G) { - return G->getFunction()->end(); + return nodes_iterator(G->getFunction()->end()); } }; diff --git a/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp b/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp index 5ad80f65ac1..64dcb4558aa 100644 --- a/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp +++ b/llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp @@ -840,7 +840,7 @@ bool AMDGPUCFGStructurizer::run() { } //while, "one iteration" over the function. MachineBasicBlock *EntryMBB = - &*GraphTraits<MachineFunction *>::nodes_begin(FuncRep); + *GraphTraits<MachineFunction *>::nodes_begin(FuncRep); if (EntryMBB->succ_size() == 0) { Finish = true; DEBUG( @@ -863,7 +863,7 @@ bool AMDGPUCFGStructurizer::run() { } while (!Finish && MakeProgress); // Misc wrap up to maintain the consistency of the Function representation. - wrapup(&*GraphTraits<MachineFunction *>::nodes_begin(FuncRep)); + wrapup(*GraphTraits<MachineFunction *>::nodes_begin(FuncRep)); // Detach retired Block, release memory. for (MBBInfoMap::iterator It = BlockInfoMap.begin(), E = BlockInfoMap.end(); @@ -907,9 +907,9 @@ void AMDGPUCFGStructurizer::orderBlocks(MachineFunction *MF) { //walk through all the block in func to check for unreachable typedef GraphTraits<MachineFunction *> GTM; - MachineFunction::iterator It = GTM::nodes_begin(MF), E = GTM::nodes_end(MF); + auto It = GTM::nodes_begin(MF), E = GTM::nodes_end(MF); for (; It != E; ++It) { - MachineBasicBlock *MBB = &(*It); + MachineBasicBlock *MBB = *It; SccNum = getSCCNum(MBB); if (SccNum == INVALIDSCCNUM) dbgs() << "unreachable block BB" << MBB->getNumber() << "\n"; diff --git a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp index 84ccb507a90..5bde45f1779 100644 --- a/llvm/lib/Transforms/Scalar/NaryReassociate.cpp +++ b/llvm/lib/Transforms/Scalar/NaryReassociate.cpp @@ -211,7 +211,7 @@ bool NaryReassociatePass::doOneIteration(Function &F) { // ensures that all bases of a candidate are in Candidates when we process it. for (auto Node = GraphTraits<DominatorTree *>::nodes_begin(DT); Node != GraphTraits<DominatorTree *>::nodes_end(DT); ++Node) { - BasicBlock *BB = Node->getBlock(); + BasicBlock *BB = (*Node)->getBlock(); for (auto I = BB->begin(); I != BB->end(); ++I) { if (SE->isSCEVable(I->getType()) && isPotentiallyNaryReassociable(&*I)) { const SCEV *OldSCEV = SE->getSCEV(&*I); diff --git a/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp b/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp index d6ae186698c..e0180fb8a03 100644 --- a/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp +++ b/llvm/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp @@ -1152,7 +1152,7 @@ bool SeparateConstOffsetFromGEP::reuniteExts(Function &F) { DominatingExprs.clear(); for (auto Node = GraphTraits<DominatorTree *>::nodes_begin(DT); Node != GraphTraits<DominatorTree *>::nodes_end(DT); ++Node) { - BasicBlock *BB = Node->getBlock(); + BasicBlock *BB = (*Node)->getBlock(); for (auto I = BB->begin(); I != BB->end(); ) { Instruction *Cur = &*I++; Changed |= reuniteExts(Cur); diff --git a/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp index 292d0400a51..a4da5fe2335 100644 --- a/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp +++ b/llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp @@ -676,7 +676,7 @@ bool StraightLineStrengthReduce::runOnFunction(Function &F) { // all bases of a candidate are in Candidates when we process it. for (auto node = GraphTraits<DominatorTree *>::nodes_begin(DT); node != GraphTraits<DominatorTree *>::nodes_end(DT); ++node) { - for (auto &I : *node->getBlock()) + for (auto &I : *(*node)->getBlock()) allocateCandidatesAndFindBasis(&I); } diff --git a/llvm/unittests/Analysis/CallGraphTest.cpp b/llvm/unittests/Analysis/CallGraphTest.cpp index af46291074c..0c9280446bc 100644 --- a/llvm/unittests/Analysis/CallGraphTest.cpp +++ b/llvm/unittests/Analysis/CallGraphTest.cpp @@ -24,11 +24,11 @@ template <typename Ty> void canSpecializeGraphTraitsIterators(Ty *G) { auto X = ++I; // Should be able to iterate over all nodes of the graph. - static_assert(std::is_same<decltype(*I), NodeTy &>::value, + static_assert(std::is_same<decltype(*I), NodeTy *>::value, "Node type does not match"); - static_assert(std::is_same<decltype(*X), NodeTy &>::value, + static_assert(std::is_same<decltype(*X), NodeTy *>::value, "Node type does not match"); - static_assert(std::is_same<decltype(*E), NodeTy &>::value, + static_assert(std::is_same<decltype(*E), NodeTy *>::value, "Node type does not match"); NodeTy *N = GraphTraits<Ty *>::getEntryNode(G); |

