LLVM
15.0.0git
|
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. More...
#include "Analysis/CFLGraph.h"
Classes | |
struct | Edge |
struct | NodeInfo |
class | ValueInfo |
Public Types | |
using | Node = InstantiatedValue |
using | EdgeList = std::vector< Edge > |
using | const_value_iterator = ValueMap::const_iterator |
Public Member Functions | |
bool | addNode (Node N, AliasAttrs Attr=AliasAttrs()) |
void | addAttr (Node N, AliasAttrs Attr) |
void | addEdge (Node From, Node To, int64_t Offset=0) |
const NodeInfo * | getNode (Node N) const |
AliasAttrs | attrFor (Node N) const |
iterator_range< const_value_iterator > | value_mappings () const |
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).
Definition at line 57 of file CFLGraph.h.
Definition at line 110 of file CFLGraph.h.
using llvm::cflaa::CFLGraph::EdgeList = std::vector<Edge> |
Definition at line 66 of file CFLGraph.h.
Definition at line 59 of file CFLGraph.h.
|
inline |
Definition at line 120 of file CFLGraph.h.
Definition at line 126 of file CFLGraph.h.
|
inline |
Definition at line 112 of file CFLGraph.h.
|
inline |
Definition at line 143 of file CFLGraph.h.
Definition at line 136 of file CFLGraph.h.
References llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), N, and llvm::ValueMapIterator< DenseMapT, KeyT >::ValueTypeProxy::second.
|
inline |
Definition at line 149 of file CFLGraph.h.
References llvm::ValueMap< KeyT, ValueT, Config >::begin(), and llvm::ValueMap< KeyT, ValueT, Config >::end().
Referenced by buildAttrMap(), and initializeWorkList().