class CFLGraph
Declaration
class CFLGraph { /* full declaration omitted */ };
Description
The Program Expression Graph (PEG) of CFL analysis CFLGraph is auxiliary data structure used by CFL-based alias analysis to describe flow-insensitive pointer-related behaviors. Given an LLVM function, the main purpose of this graph is to abstract away unrelated facts and translate the rest into a form that can be easily digested by CFL analyses. Each Node in the graph is an InstantiatedValue, and each edge represent a pointer assignment between InstantiatedValue. Pointer references/dereferences are not explicitly stored in the graph: we implicitly assume that for each node (X, I) it has a dereference edge to (X, I+1) and a reference edge to (X, I-1).
Declared at: llvm/lib/Analysis/CFLGraph.h:57
Method Overview
- public void addAttr(llvm::cflaa::CFLGraph::Node N, llvm::cflaa::AliasAttrs Attr)
- public void addEdge(llvm::cflaa::CFLGraph::Node From, llvm::cflaa::CFLGraph::Node To, int64_t Offset = 0)
- public bool addNode(llvm::cflaa::CFLGraph::Node N, llvm::cflaa::AliasAttrs Attr = std::bitset<32>())
- public llvm::cflaa::AliasAttrs attrFor(llvm::cflaa::CFLGraph::Node N) const
- public const llvm::cflaa::CFLGraph::NodeInfo * getNode(llvm::cflaa::CFLGraph::Node N) const
- public iterator_range<llvm::cflaa::CFLGraph::const_value_iterator> value_mappings() const
Methods
¶void addAttr(llvm::cflaa::CFLGraph::Node N,
llvm::cflaa::AliasAttrs Attr)
void addAttr(llvm::cflaa::CFLGraph::Node N,
llvm::cflaa::AliasAttrs Attr)
Declared at: llvm/lib/Analysis/CFLGraph.h:120
Parameters
- llvm::cflaa::CFLGraph::Node N
- llvm::cflaa::AliasAttrs Attr
¶void addEdge(llvm::cflaa::CFLGraph::Node From,
llvm::cflaa::CFLGraph::Node To,
int64_t Offset = 0)
void addEdge(llvm::cflaa::CFLGraph::Node From,
llvm::cflaa::CFLGraph::Node To,
int64_t Offset = 0)
Declared at: llvm/lib/Analysis/CFLGraph.h:126
Parameters
- llvm::cflaa::CFLGraph::Node From
- llvm::cflaa::CFLGraph::Node To
- int64_t Offset = 0
¶bool addNode(llvm::cflaa::CFLGraph::Node N,
llvm::cflaa::AliasAttrs Attr =
std::bitset<32>())
bool addNode(llvm::cflaa::CFLGraph::Node N,
llvm::cflaa::AliasAttrs Attr =
std::bitset<32>())
Declared at: llvm/lib/Analysis/CFLGraph.h:112
Parameters
- llvm::cflaa::CFLGraph::Node N
- llvm::cflaa::AliasAttrs Attr = std::bitset<32>()
¶llvm::cflaa::AliasAttrs attrFor(
llvm::cflaa::CFLGraph::Node N) const
llvm::cflaa::AliasAttrs attrFor(
llvm::cflaa::CFLGraph::Node N) const
Declared at: llvm/lib/Analysis/CFLGraph.h:143
Parameters
¶const llvm::cflaa::CFLGraph::NodeInfo* getNode(
llvm::cflaa::CFLGraph::Node N) const
const llvm::cflaa::CFLGraph::NodeInfo* getNode(
llvm::cflaa::CFLGraph::Node N) const
Declared at: llvm/lib/Analysis/CFLGraph.h:136
Parameters
¶iterator_range<
llvm::cflaa::CFLGraph::const_value_iterator>
value_mappings() const
iterator_range<
llvm::cflaa::CFLGraph::const_value_iterator>
value_mappings() const
Declared at: llvm/lib/Analysis/CFLGraph.h:149