From 7c9cfb5b961ea8cb0a4cc5fdd65c84797e528e94 Mon Sep 17 00:00:00 2001 From: Tim Shen Date: Fri, 19 Aug 2016 21:52:34 +0000 Subject: [PATCH] [CallGraph] Use decltype instead of pointer_to_unary_function. NFC. Reviewers: dblaikie Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23725 llvm-svn: 279328 --- llvm/include/llvm/Analysis/CallGraph.h | 55 ++++++++++++-------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/llvm/include/llvm/Analysis/CallGraph.h b/llvm/include/llvm/Analysis/CallGraph.h index 9ea22a2e7363..54da6e8fc150 100644 --- a/llvm/include/llvm/Analysis/CallGraph.h +++ b/llvm/include/llvm/Analysis/CallGraph.h @@ -413,21 +413,20 @@ template <> struct GraphTraits { typedef CallGraphNode *NodeRef; typedef CallGraphNode::CallRecord CGNPairTy; - typedef std::pointer_to_unary_function - CGNDerefFun; static NodeType *getEntryNode(CallGraphNode *CGN) { return CGN; } - typedef mapped_iterator ChildIteratorType; + static CallGraphNode *CGNGetValue(CGNPairTy P) { return P.second; } + + typedef mapped_iterator + ChildIteratorType; static inline ChildIteratorType child_begin(NodeType *N) { - return map_iterator(N->begin(), CGNDerefFun(CGNDeref)); + return ChildIteratorType(N->begin(), &CGNGetValue); } static inline ChildIteratorType child_end(NodeType *N) { - return map_iterator(N->end(), CGNDerefFun(CGNDeref)); + return ChildIteratorType(N->end(), &CGNGetValue); } - - static CallGraphNode *CGNDeref(CGNPairTy P) { return P.second; } }; template <> struct GraphTraits { @@ -435,22 +434,20 @@ template <> struct GraphTraits { typedef const CallGraphNode *NodeRef; typedef CallGraphNode::CallRecord CGNPairTy; - typedef std::pointer_to_unary_function - CGNDerefFun; static NodeType *getEntryNode(const CallGraphNode *CGN) { return CGN; } - typedef mapped_iterator + static const CallGraphNode *CGNGetValue(CGNPairTy P) { return P.second; } + + typedef mapped_iterator ChildIteratorType; static inline ChildIteratorType child_begin(NodeType *N) { - return map_iterator(N->begin(), CGNDerefFun(CGNDeref)); + return ChildIteratorType(N->begin(), &CGNGetValue); } static inline ChildIteratorType child_end(NodeType *N) { - return map_iterator(N->end(), CGNDerefFun(CGNDeref)); + return ChildIteratorType(N->end(), &CGNGetValue); } - - static const CallGraphNode *CGNDeref(CGNPairTy P) { return P.second; } }; template <> @@ -460,19 +457,19 @@ struct GraphTraits : public GraphTraits { } typedef std::pair> PairTy; - typedef std::pointer_to_unary_function - DerefFun; + static CallGraphNode *CGGetValuePtr(const PairTy &P) { + return P.second.get(); + } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef mapped_iterator nodes_iterator; + typedef mapped_iterator + nodes_iterator; static nodes_iterator nodes_begin(CallGraph *CG) { - return map_iterator(CG->begin(), DerefFun(CGdereference)); + return nodes_iterator(CG->begin(), &CGGetValuePtr); } static nodes_iterator nodes_end(CallGraph *CG) { - return map_iterator(CG->end(), DerefFun(CGdereference)); + return nodes_iterator(CG->end(), &CGGetValuePtr); } - - static CallGraphNode *CGdereference(const PairTy &P) { return P.second.get(); } }; template <> @@ -483,20 +480,18 @@ struct GraphTraits : public GraphTraits< } typedef std::pair> PairTy; - typedef std::pointer_to_unary_function - DerefFun; + static const CallGraphNode *CGGetValuePtr(const PairTy &P) { + return P.second.get(); + } // nodes_iterator/begin/end - Allow iteration over all nodes in the graph - typedef mapped_iterator nodes_iterator; + typedef mapped_iterator + nodes_iterator; static nodes_iterator nodes_begin(const CallGraph *CG) { - return map_iterator(CG->begin(), DerefFun(CGdereference)); + return nodes_iterator(CG->begin(), &CGGetValuePtr); } static nodes_iterator nodes_end(const CallGraph *CG) { - return map_iterator(CG->end(), DerefFun(CGdereference)); - } - - static const CallGraphNode *CGdereference(const PairTy &P) { - return P.second.get(); + return nodes_iterator(CG->end(), &CGGetValuePtr); } };