[llvm] r279328 - [CallGraph] Use decltype instead of pointer_to_unary_function. NFC.
Tim Shen via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 19 14:52:35 PDT 2016
Author: timshen
Date: Fri Aug 19 16:52:34 2016
New Revision: 279328
URL: http://llvm.org/viewvc/llvm-project?rev=279328&view=rev
Log:
[CallGraph] Use decltype instead of pointer_to_unary_function. NFC.
Reviewers: dblaikie
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D23725
Modified:
llvm/trunk/include/llvm/Analysis/CallGraph.h
Modified: llvm/trunk/include/llvm/Analysis/CallGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/CallGraph.h?rev=279328&r1=279327&r2=279328&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/CallGraph.h (original)
+++ llvm/trunk/include/llvm/Analysis/CallGraph.h Fri Aug 19 16:52:34 2016
@@ -413,21 +413,20 @@ template <> struct GraphTraits<CallGraph
typedef CallGraphNode *NodeRef;
typedef CallGraphNode::CallRecord CGNPairTy;
- typedef std::pointer_to_unary_function<CGNPairTy, CallGraphNode *>
- CGNDerefFun;
static NodeType *getEntryNode(CallGraphNode *CGN) { return CGN; }
- typedef mapped_iterator<NodeType::iterator, CGNDerefFun> ChildIteratorType;
+ static CallGraphNode *CGNGetValue(CGNPairTy P) { return P.second; }
+
+ typedef mapped_iterator<NodeType::iterator, decltype(&CGNGetValue)>
+ 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<const CallGraphNode *> {
@@ -435,22 +434,20 @@ template <> struct GraphTraits<const Cal
typedef const CallGraphNode *NodeRef;
typedef CallGraphNode::CallRecord CGNPairTy;
- typedef std::pointer_to_unary_function<CGNPairTy, const CallGraphNode *>
- CGNDerefFun;
static NodeType *getEntryNode(const CallGraphNode *CGN) { return CGN; }
- typedef mapped_iterator<NodeType::const_iterator, CGNDerefFun>
+ static const CallGraphNode *CGNGetValue(CGNPairTy P) { return P.second; }
+
+ typedef mapped_iterator<NodeType::const_iterator, decltype(&CGNGetValue)>
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<CallGraph *> : public
}
typedef std::pair<const Function *const, std::unique_ptr<CallGraphNode>>
PairTy;
- typedef std::pointer_to_unary_function<const PairTy &, CallGraphNode *>
- 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<CallGraph::iterator, DerefFun> nodes_iterator;
+ typedef mapped_iterator<CallGraph::iterator, decltype(&CGGetValuePtr)>
+ 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<const CallGraph *> :
}
typedef std::pair<const Function *const, std::unique_ptr<CallGraphNode>>
PairTy;
- typedef std::pointer_to_unary_function<const PairTy &, const CallGraphNode *>
- 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<CallGraph::const_iterator, DerefFun> nodes_iterator;
+ typedef mapped_iterator<CallGraph::const_iterator, decltype(&CGGetValuePtr)>
+ 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);
}
};
More information about the llvm-commits
mailing list