LLVM API Documentation
A node in the call graph for a module. More...
#include <CallGraph.h>
Public Types | |
typedef std::pair< WeakVH, CallGraphNode * > | CallRecord |
A pair of the calling instruction (a call or invoke) and the call graph node being called. | |
typedef std::vector< CallRecord > | CalledFunctionsVector |
typedef std::vector < CallRecord >::iterator | iterator |
typedef std::vector < CallRecord >::const_iterator | const_iterator |
Public Member Functions | |
CallGraphNode (Function *F) | |
Creates a node for the specified function. | |
~CallGraphNode () | |
Function * | getFunction () const |
Returns the function that this call graph node represents. | |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
bool | empty () const |
unsigned | size () const |
unsigned | getNumReferences () const |
Returns the number of other CallGraphNodes in this CallGraph that reference this node in their callee list. | |
CallGraphNode * | operator[] (unsigned i) const |
Returns the i'th called function. | |
void | dump () const |
Print out this call graph node. | |
void | print (raw_ostream &OS) const |
void | removeAllCalledFunctions () |
Removes all edges from this CallGraphNode to any functions it calls. | |
void | stealCalledFunctionsFrom (CallGraphNode *N) |
Moves all the callee information from N to this node. | |
void | addCalledFunction (CallSite CS, CallGraphNode *M) |
Adds a function to the list of functions called by this one. | |
void | removeCallEdge (iterator I) |
void | removeCallEdgeFor (CallSite CS) |
Removes the edge in the node for the specified call site. | |
void | removeAnyCallEdgeTo (CallGraphNode *Callee) |
Removes all call edges from this node to the specified callee function. | |
void | removeOneAbstractEdgeTo (CallGraphNode *Callee) |
Removes one edge associated with a null callsite from this node to the specified callee function. | |
void | replaceCallEdge (CallSite CS, CallSite NewCS, CallGraphNode *NewNode) |
Replaces the edge in the node for the specified call site with a new one. | |
Friends | |
class | CallGraph |
A node in the call graph for a module.
Typically represents a function in the call graph. There are also special "null" nodes used to represent theoretical entries in the call graph.
Definition at line 165 of file CallGraph.h.
typedef std::vector<CallRecord> llvm::CallGraphNode::CalledFunctionsVector |
Definition at line 172 of file CallGraph.h.
typedef std::pair<WeakVH, CallGraphNode *> llvm::CallGraphNode::CallRecord |
A pair of the calling instruction (a call or invoke) and the call graph node being called.
Definition at line 169 of file CallGraph.h.
typedef std::vector<CallRecord>::const_iterator llvm::CallGraphNode::const_iterator |
Definition at line 182 of file CallGraph.h.
typedef std::vector<CallRecord>::iterator llvm::CallGraphNode::iterator |
Definition at line 181 of file CallGraph.h.
llvm::CallGraphNode::CallGraphNode | ( | Function * | F | ) | [inline] |
Creates a node for the specified function.
Definition at line 175 of file CallGraph.h.
llvm::CallGraphNode::~CallGraphNode | ( | ) | [inline] |
Definition at line 177 of file CallGraph.h.
void llvm::CallGraphNode::addCalledFunction | ( | CallSite | CS, |
CallGraphNode * | M | ||
) | [inline] |
Adds a function to the list of functions called by this one.
Definition at line 230 of file CallGraph.h.
References llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getCalledFunction(), llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getInstruction(), and llvm::Function::isIntrinsic().
Referenced by UpdateCallGraphAfterInlining().
iterator llvm::CallGraphNode::begin | ( | ) | [inline] |
Definition at line 187 of file CallGraph.h.
Referenced by llvm::GraphTraits< CallGraphNode * >::child_begin(), llvm::GraphTraits< const CallGraphNode * >::child_begin(), print(), and UpdateCallGraphAfterInlining().
const_iterator llvm::CallGraphNode::begin | ( | ) | const [inline] |
Definition at line 189 of file CallGraph.h.
void CallGraphNode::dump | ( | ) | const |
Print out this call graph node.
Definition at line 176 of file CallGraph.cpp.
References llvm::dbgs(), and print().
bool llvm::CallGraphNode::empty | ( | ) | const [inline] |
Definition at line 191 of file CallGraph.h.
Referenced by llvm::CallGraph::removeFunctionFromModule().
iterator llvm::CallGraphNode::end | ( | ) | [inline] |
Definition at line 188 of file CallGraph.h.
Referenced by llvm::GraphTraits< CallGraphNode * >::child_end(), llvm::GraphTraits< const CallGraphNode * >::child_end(), print(), and UpdateCallGraphAfterInlining().
const_iterator llvm::CallGraphNode::end | ( | ) | const [inline] |
Definition at line 190 of file CallGraph.h.
Function* llvm::CallGraphNode::getFunction | ( | ) | const [inline] |
Returns the function that this call graph node represents.
Definition at line 185 of file CallGraph.h.
Referenced by llvm::DOTGraphTraits< CallGraph * >::getNodeLabel(), llvm::CallGraph::print(), print(), llvm::Inliner::removeDeadFunctions(), and llvm::CallGraph::removeFunctionFromModule().
unsigned llvm::CallGraphNode::getNumReferences | ( | ) | const [inline] |
Returns the number of other CallGraphNodes in this CallGraph that reference this node in their callee list.
Definition at line 196 of file CallGraph.h.
Referenced by print().
CallGraphNode* llvm::CallGraphNode::operator[] | ( | unsigned | i | ) | const [inline] |
Returns the i'th called function.
Definition at line 199 of file CallGraph.h.
void CallGraphNode::print | ( | raw_ostream & | OS | ) | const |
Definition at line 157 of file CallGraph.cpp.
References begin(), end(), getFunction(), llvm::Value::getName(), getNumReferences(), and I.
Referenced by dump().
void llvm::CallGraphNode::removeAllCalledFunctions | ( | ) | [inline] |
Removes all edges from this CallGraphNode to any functions it calls.
Definition at line 215 of file CallGraph.h.
Referenced by llvm::Inliner::removeDeadFunctions().
void CallGraphNode::removeAnyCallEdgeTo | ( | CallGraphNode * | Callee | ) |
Removes all call edges from this node to the specified callee function.
This takes more time to execute than removeCallEdgeTo, so it should not be used unless necessary.
Definition at line 197 of file CallGraph.cpp.
Referenced by llvm::Inliner::removeDeadFunctions().
void llvm::CallGraphNode::removeCallEdge | ( | iterator | I | ) | [inline] |
Definition at line 237 of file CallGraph.h.
void CallGraphNode::removeCallEdgeFor | ( | CallSite | CS | ) |
Removes the edge in the node for the specified call site.
Note that this method takes linear time, so it should be used sparingly.
removeCallEdgeFor - This method removes the edge in the node for the specified call site. Note that this method takes linear time, so it should be used sparingly.
Definition at line 182 of file CallGraph.cpp.
References llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getInstruction(), and I.
Referenced by UpdateCallGraphAfterInlining().
void CallGraphNode::removeOneAbstractEdgeTo | ( | CallGraphNode * | Callee | ) |
Removes one edge associated with a null callsite from this node to the specified callee function.
removeOneAbstractEdgeTo - Remove one edge associated with a null callsite from this node to the specified callee function.
Definition at line 209 of file CallGraph.cpp.
References I.
void CallGraphNode::replaceCallEdge | ( | CallSite | CS, |
CallSite | NewCS, | ||
CallGraphNode * | NewNode | ||
) |
Replaces the edge in the node for the specified call site with a new one.
Note that this method takes linear time, so it should be used sparingly.
replaceCallEdge - This method replaces the edge in the node for the specified call site with a new one. Note that this method takes linear time, so it should be used sparingly.
Definition at line 225 of file CallGraph.cpp.
References llvm::CallSiteBase< FunTy, ValTy, UserTy, InstrTy, CallTy, InvokeTy, IterTy >::getInstruction(), and I.
unsigned llvm::CallGraphNode::size | ( | ) | const [inline] |
Definition at line 192 of file CallGraph.h.
void llvm::CallGraphNode::stealCalledFunctionsFrom | ( | CallGraphNode * | N | ) | [inline] |
Moves all the callee information from N to this node.
Definition at line 223 of file CallGraph.h.
References std::swap().
friend class CallGraph [friend] |
Definition at line 266 of file CallGraph.h.