LLVM: llvm::CallGraphNode Class Reference (original) (raw)

A node in the call graph for a module. More...

#include "[llvm/Analysis/CallGraph.h](CallGraph%5F8h%5Fsource.html)"

Public Types
using CallRecord = std::pair<std::optional<WeakTrackingVH>, CallGraphNode *>
A pair of the calling instruction (a call or invoke) and the call graph node being called.
using CalledFunctionsVector = std::vector<CallRecord>
using iterator = std::vector<CallRecord>::iterator
using const_iterator = std::vector<CallRecord>::const_iterator
Public Member Functions
CallGraphNode (CallGraph *CG, Function *F)
Creates a node for the specified function.
CallGraphNode (const CallGraphNode &)=delete
CallGraphNode & operator= (const CallGraphNode &)=delete
~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.
LLVM_ABI void dump () const
Print out this call graph node.
LLVM_ABI 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 (CallBase *Call, CallGraphNode *M)
Adds a function to the list of functions called by this one.
void removeCallEdge (iterator I)
LLVM_ABI void removeOneAbstractEdgeTo (CallGraphNode *Callee)
Removes one edge associated with a null callsite from this node to the specified callee function.
LLVM_ABI void replaceCallEdge (CallBase &Call, CallBase &NewCall, CallGraphNode *NewNode)
Replaces the edge in the node for the specified call site with a new one.

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 162 of file CallGraph.h.

CalledFunctionsVector

CallRecord

A pair of the calling instruction (a call or invoke) and the call graph node being called.

Call graph node may have two types of call records which represent an edge in the call graph - reference or a call edge. Reference edges are not associated with any call instruction and are created with the first field set to None, while real call edges have instruction address in this field. Therefore, all real call edges are expected to have a value in the first field and it is not supposed to be nullptr. Reference edges, for example, are used for connecting broker function caller to the callback function for callback call sites.

Definition at line 174 of file CallGraph.h.

const_iterator

iterator

using llvm::CallGraphNode::iterator = std::vector<CallRecord>::iterator

CallGraphNode() [2/2]

~CallGraphNode()

llvm::CallGraphNode::~CallGraphNode ( ) inline

addCalledFunction()

begin() [1/2]

iterator llvm::CallGraphNode::begin ( ) inline

begin() [2/2]

const_iterator llvm::CallGraphNode::begin ( ) const inline

dump()

empty()

bool llvm::CallGraphNode::empty ( ) const inline

end() [1/2]

iterator llvm::CallGraphNode::end ( ) inline

end() [2/2]

const_iterator llvm::CallGraphNode::end ( ) const inline

getFunction()

Function * llvm::CallGraphNode::getFunction ( ) const inline

getNumReferences()

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 204 of file CallGraph.h.

Referenced by print().

operator=()

operator[]()

print()

removeAllCalledFunctions()

void llvm::CallGraphNode::removeAllCalledFunctions ( ) inline

removeCallEdge()

void llvm::CallGraphNode::removeCallEdge ( iterator I) inline

removeOneAbstractEdgeTo()

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 196 of file CallGraph.cpp.

References assert(), CallGraphNode(), and I.

Referenced by replaceCallEdge().

replaceCallEdge()

Replaces the edge in the node for the specified call site with a new one.

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 212 of file CallGraph.cpp.

References addCalledFunction(), assert(), Call, CallGraphNode(), llvm::forEachCallbackFunction(), I, N, llvm::SmallVectorTemplateBase< T, bool >::push_back(), removeOneAbstractEdgeTo(), and llvm::SmallVectorTemplateCommon< T, typename >::size().

size()

unsigned llvm::CallGraphNode::size ( ) const inline

stealCalledFunctionsFrom()

void llvm::CallGraphNode::stealCalledFunctionsFrom ( CallGraphNode * N) inline

CallGraph


The documentation for this class was generated from the following files: