LLVM: llvm::LazyCallGraph::Edge Class Reference (original) (raw)

A class used to represent edges in the call graph. More...

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

Public Types
enum Kind : bool { Ref = false , Call = true }
The kind of edge in the graph. More...
Public Member Functions
Edge ()
Edge (Node &N, Kind K)
operator bool () const
Test whether the edge is null.
Kind getKind () const
Returns the Kind of the edge.
bool isCall () const
Test whether the edge represents a direct call to a function.
Node & getNode () const
Get the call graph node referenced by this edge.
Function & getFunction () const
Get the function referenced by this edge.

A class used to represent edges in the call graph.

The lazy call graph models both call edges and reference edges. Call edges are much what you would expect, and exist when there is a 'call' or 'invoke' instruction of some function. Reference edges are also tracked along side these, and exist whenever any instruction (transitively through its operands) references a function. All call edges are inherently reference edges, and so the reference graph forms a superset of the formal call graph.

All of these forms of edges are fundamentally represented as outgoing edges. The edges are stored in the source node and point at the target node. This allows the edge structure itself to be a very compact data structure: essentially a tagged pointer.

Definition at line 129 of file LazyCallGraph.h.

Kind

enum llvm::LazyCallGraph::Edge::Kind : bool

The kind of edge in the graph.

Enumerator
Ref
Call

Definition at line 132 of file LazyCallGraph.h.

Edge() [1/2]

llvm::LazyCallGraph::Edge::Edge ( ) inlinedefault

References N.

Edge() [2/2]

llvm::LazyCallGraph::Edge::Edge ( Node & N, Kind K ) inlineexplicit

getFunction()

Function & llvm::LazyCallGraph::Edge::getFunction ( ) const inline

getKind()

LazyCallGraph::Edge::Kind llvm::LazyCallGraph::Edge::getKind ( ) const inline

getNode()

Get the call graph node referenced by this edge.

This requires that the edge is not null.

Definition at line 1234 of file LazyCallGraph.h.

References assert().

isCall()

bool llvm::LazyCallGraph::Edge::isCall ( ) const inline

operator bool()

llvm::LazyCallGraph::Edge::operator bool ( ) const inlineexplicit

Test whether the edge is null.

This happens when an edge has been deleted. We leave the edge objects around but clear them.

Definition at line 1220 of file LazyCallGraph.h.

LazyCallGraph::EdgeSequence

LazyCallGraph::RefSCC


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