clang 8.0.0

Classes | Public Member Functions | Static Public Member Functions | List of all members
clang::LiveVariables Class Reference

`#include "clang/Analysis/Analyses/LiveVariables.h"`

Inheritance diagram for clang::LiveVariables:
[legend]
Collaboration diagram for clang::LiveVariables:
[legend]

## Classes
class | LivenessValues
class | Observer

## Public Member Functions
| ~LiveVariables () override
bool | isLive (const CFGBlock *B, const VarDecl *D)
| Return true if a variable is live at the end of a specified block. More...
bool | isLive (const Stmt *S, const VarDecl *D)
| Returns true if a variable is live at the beginning of the the statement. More...
bool | isLive (const Stmt *Loc, const Stmt *StmtVal)
| Returns true the block-level expression "value" is live before the given block-level expression (see runOnAllBlocks). More...
void | dumpBlockLiveness (const SourceManager &M)
| Print to stderr the variable liveness information associated with each basic block. More...
void | dumpStmtLiveness (const SourceManager &M)
| Print to stderr the statement liveness information associated with each basic block. More...
void | runOnAllBlocks (Observer &obs)
Public Member Functions inherited from clang::ManagedAnalysis
virtual | ~ManagedAnalysis ()

## Static Public Member Functions
static LiveVariables * | computeLiveness (AnalysisDeclContext &analysisContext, bool killAtAssign)
| Compute the liveness information for a given CFG. More...
static LiveVariables * | create (AnalysisDeclContext &analysisContext)
static const void * | getTag ()

## Additional Inherited Members
Protected Member Functions inherited from clang::ManagedAnalysis
| ManagedAnalysis ()=default

## Detailed Description

Definition at line 29 of file LiveVariables.h.

## Constructor & Destructor Documentation

## ◆ ~LiveVariables()

LiveVariables::~LiveVariables | ( |  | ) |
| override

Definition at line 537 of file LiveVariables.cpp.

Referenced by clang::LiveVariables::Observer::observerKill().

## Member Function Documentation

## ◆ computeLiveness()

LiveVariables * LiveVariables::computeLiveness | ( | AnalysisDeclContext & | analysisContext,
|  | bool | killAtAssign
| ) |  |
| static

Compute the liveness information for a given CFG.

Definition at line 542 of file LiveVariables.cpp.

References clang::CFGBlock::begin(), clang::CFG::begin(), clang::CFGBlock::end(), clang::CFG::end(), clang::LiveVariables::LivenessValues::equals(), clang::CFGBlock::getBlockID(), clang::AnalysisDeclContext::getCFG(), clang::CFG::getNumBlockIDs(), clang::ast_matchers::stmt, clang::CFGBlock::succ_begin(), and clang::CFGBlock::succ_end().

Referenced by create(), clang::RelaxedLiveVariables::create(), and clang::LiveVariables::Observer::observerKill().

## ◆ create()

static LiveVariables* clang::LiveVariables::create | ( | AnalysisDeclContext & | analysisContext | ) |
| inline static

Definition at line 101 of file LiveVariables.h.

References computeLiveness(), getTag(), and clang::LiveVariables::LivenessValues::LiveVariables.

## ◆ dumpBlockLiveness()

void LiveVariables::dumpBlockLiveness | ( | const SourceManager & | M | ) |

Print to stderr the variable liveness information associated with each basic block.

Definition at line 619 of file LiveVariables.cpp.

References clang::Decl::getBeginLoc(), clang::CFGBlock::getBlockID(), getImpl(), and clang::LiveVariables::LivenessValues::liveDecls.

## ◆ dumpStmtLiveness()

void LiveVariables::dumpStmtLiveness | ( | const SourceManager & | M | ) |

Print to stderr the statement liveness information associated with each basic block.

Definition at line 665 of file LiveVariables.cpp.

References clang::Stmt::dump(), and getImpl().

## ◆ getTag()

const void * LiveVariables::getTag | ( |  | ) |
| static

Definition at line 683 of file LiveVariables.cpp.

Referenced by create(), and clang::RelaxedLiveVariables::create().

## ◆ isLive() [1/3]

bool LiveVariables::isLive | ( | const CFGBlock * | B,
|  | const VarDecl * | D
| ) |  |

Return true if a variable is live at the end of a specified block.

Definition at line 184 of file LiveVariables.cpp.

References getImpl(), and isAlwaysAlive().

## ◆ isLive() [2/3]

bool LiveVariables::isLive | ( | const Stmt * | S,
|  | const VarDecl * | D
| ) |  |

Returns true if a variable is live at the beginning of the the statement.

This query only works if liveness information has been recorded at the statement level (see runOnAllBlocks), and only returns liveness information for block-level expressions.

Definition at line 188 of file LiveVariables.cpp.

## ◆ isLive() [3/3]

bool LiveVariables::isLive | ( | const Stmt * | Loc,
|  | const Stmt * | StmtVal
| ) |  |

Returns true the block-level expression "value" is live before the given block-level expression (see runOnAllBlocks).

Definition at line 192 of file LiveVariables.cpp.

## ◆ runOnAllBlocks()

void LiveVariables::runOnAllBlocks | ( | LiveVariables::Observer & | obs | ) |

Definition at line 529 of file LiveVariables.cpp.

References clang::CFG::begin(), clang::CFG::end(), and getImpl().

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

- include/clang/Analysis/Analyses/LiveVariables.h
- lib/Analysis/LiveVariables.cpp