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

Member Variables

private llvm::cflaa::CFLGraph::ValueMap ValueImpls

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
  • private llvm::cflaa::CFLGraph::NodeInfo * getNode(llvm::cflaa::CFLGraph::Node N)
  • 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)

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)

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>())

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

Declared at: llvm/lib/Analysis/CFLGraph.h:143

Parameters

llvm::cflaa::CFLGraph::Node N

llvm::cflaa::CFLGraph::NodeInfo* getNode(
    llvm::cflaa::CFLGraph::Node N)

Declared at: llvm/lib/Analysis/CFLGraph.h:102

Parameters

llvm::cflaa::CFLGraph::Node N

const llvm::cflaa::CFLGraph::NodeInfo* getNode(
    llvm::cflaa::CFLGraph::Node N) const

Declared at: llvm/lib/Analysis/CFLGraph.h:136

Parameters

llvm::cflaa::CFLGraph::Node N

iterator_range<
    llvm::cflaa::CFLGraph::const_value_iterator>
value_mappings() const

Declared at: llvm/lib/Analysis/CFLGraph.h:149