clang 22.0.0git
clang::DataflowValues< ValueTypes, _AnalysisDirTag > Class Template Reference

DataflowValues. Container class to store dataflow values for a CFG. More...

#include "clang/Analysis/FlowSensitive/DataflowValues.h"

Public Types

using ValTy = typename ValueTypes::ValTy
using AnalysisDataTy = typename ValueTypes::AnalysisDataTy
using AnalysisDirTag = _AnalysisDirTag
using EdgeDataMapTy = llvm::DenseMap<ProgramPoint, ValTy>
using BlockDataMapTy = llvm::DenseMap<const CFGBlock *, ValTy>
using StmtDataMapTy = llvm::DenseMap<const Stmt *, ValTy>

Public Member Functions

bool isForwardAnalysis ()
 isForwardAnalysis - Returns true if the dataflow values are computed from a forward analysis.
bool isBackwardAnalysis ()
 isBackwardAnalysis - Returns true if the dataflow values are computed from a backward analysis.
 DataflowValues ()
 ~DataflowValues ()
void InitializeValues (const CFG &cfg)
 InitializeValues - Invoked by the solver to initialize state needed for dataflow analysis.
ValTygetEdgeData (const BlockEdge &E)
 getEdgeData - Retrieves the dataflow values associated with a CFG edge.
const ValTygetEdgeData (const BlockEdge &E) const
ValTygetBlockData (const CFGBlock *B)
 getBlockData - Retrieves the dataflow values associated with a specified CFGBlock.
const ValTygetBlockData (const CFGBlock *B) const
ValTygetStmtData (const Stmt *S)
 getStmtData - Retrieves the dataflow values associated with a specified Stmt.
const ValTygetStmtData (const Stmt *S) const
EdgeDataMapTygetEdgeDataMap ()
 getEdgeDataMap - Retrieves the internal map between CFG edges and dataflow values.
const EdgeDataMapTygetEdgeDataMap () const
BlockDataMapTygetBlockDataMap ()
 getBlockDataMap - Retrieves the internal map between CFGBlocks and dataflow values.
const BlockDataMapTygetBlockDataMap () const
StmtDataMapTygetStmtDataMap ()
 getStmtDataMap - Retrieves the internal map between Stmts and dataflow values.
const StmtDataMapTygetStmtDataMap () const
AnalysisDataTygetAnalysisData ()
 getAnalysisData - Retrieves the meta data associated with a dataflow analysis for analyzing a particular CFG.
const AnalysisDataTygetAnalysisData () const

Protected Attributes

EdgeDataMapTy EdgeDataMap
BlockDataMapTy BlockDataMap
StmtDataMapTyStmtDataMap
AnalysisDataTy AnalysisData

Detailed Description

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
class clang::DataflowValues< ValueTypes, _AnalysisDirTag >

DataflowValues. Container class to store dataflow values for a CFG.

Definition at line 41 of file DataflowValues.h.

Member Typedef Documentation

◆ AnalysisDataTy

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::AnalysisDataTy = typename ValueTypes::AnalysisDataTy

Definition at line 49 of file DataflowValues.h.

◆ AnalysisDirTag

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::AnalysisDirTag = _AnalysisDirTag

Definition at line 50 of file DataflowValues.h.

◆ BlockDataMapTy

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::BlockDataMapTy = llvm::DenseMap<const CFGBlock *, ValTy>

Definition at line 52 of file DataflowValues.h.

◆ EdgeDataMapTy

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::EdgeDataMapTy = llvm::DenseMap<ProgramPoint, ValTy>

Definition at line 51 of file DataflowValues.h.

◆ StmtDataMapTy

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::StmtDataMapTy = llvm::DenseMap<const Stmt *, ValTy>

Definition at line 53 of file DataflowValues.h.

◆ ValTy

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
using clang::DataflowValues< ValueTypes, _AnalysisDirTag >::ValTy = typename ValueTypes::ValTy

Definition at line 48 of file DataflowValues.h.

Constructor & Destructor Documentation

◆ DataflowValues()

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
clang::DataflowValues< ValueTypes, _AnalysisDirTag >::DataflowValues ( )
inline

Definition at line 77 of file DataflowValues.h.

References NULL, and StmtDataMap.

Referenced by getBlockData(), getEdgeData(), getStmtData(), and getStmtDataMap().

◆ ~DataflowValues()

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
clang::DataflowValues< ValueTypes, _AnalysisDirTag >::~DataflowValues ( )
inline

Definition at line 78 of file DataflowValues.h.

References StmtDataMap.

Member Function Documentation

◆ getAnalysisData() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
AnalysisDataTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getAnalysisData ( )
inline

getAnalysisData - Retrieves the meta data associated with a dataflow analysis for analyzing a particular CFG.

This is typically consumed by transfer function code (via the solver). This can also be used by subclasses to interpret the dataflow values.

Definition at line 157 of file DataflowValues.h.

References AnalysisData.

◆ getAnalysisData() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const AnalysisDataTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getAnalysisData ( ) const
inline

Definition at line 158 of file DataflowValues.h.

References AnalysisData.

◆ getBlockData() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockData ( const CFGBlock * B)
inline

getBlockData - Retrieves the dataflow values associated with a specified CFGBlock.

If the dataflow analysis is a forward analysis, this data is associated with the END of the block. If the analysis is a backwards analysis, it is associated with the ENTRY of the block.

Definition at line 101 of file DataflowValues.h.

References BlockDataMap.

Referenced by getBlockData().

◆ getBlockData() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockData ( const CFGBlock * B) const
inline

Definition at line 107 of file DataflowValues.h.

References DataflowValues(), and getBlockData().

◆ getBlockDataMap() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
BlockDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockDataMap ( )
inline

getBlockDataMap - Retrieves the internal map between CFGBlocks and dataflow values.

If the dataflow analysis operates in the forward direction, the values correspond to the dataflow values at the start of the block. Otherwise, for a backward analysis, the values correspond to the dataflow values at the end of the block.

Definition at line 139 of file DataflowValues.h.

References BlockDataMap.

◆ getBlockDataMap() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const BlockDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockDataMap ( ) const
inline

Definition at line 140 of file DataflowValues.h.

References BlockDataMap.

◆ getEdgeData() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeData ( const BlockEdge & E)
inline

getEdgeData - Retrieves the dataflow values associated with a CFG edge.

Definition at line 87 of file DataflowValues.h.

References EdgeDataMap.

Referenced by getEdgeData().

◆ getEdgeData() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeData ( const BlockEdge & E) const
inline

Definition at line 93 of file DataflowValues.h.

References DataflowValues(), and getEdgeData().

◆ getEdgeDataMap() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
EdgeDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeDataMap ( )
inline

getEdgeDataMap - Retrieves the internal map between CFG edges and dataflow values.

Usually used by a dataflow solver to compute values for blocks.

Definition at line 131 of file DataflowValues.h.

References EdgeDataMap.

◆ getEdgeDataMap() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const EdgeDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeDataMap ( ) const
inline

Definition at line 132 of file DataflowValues.h.

References EdgeDataMap.

◆ getStmtData() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtData ( const Stmt * S)
inline

getStmtData - Retrieves the dataflow values associated with a specified Stmt.

If the dataflow analysis is a forward analysis, this data corresponds to the point immediately before a Stmt. If the analysis is a backwards analysis, it is associated with the point after a Stmt. This data is only computed for block-level expressions, and only when requested when the analysis is executed.

Definition at line 117 of file DataflowValues.h.

References StmtDataMap.

Referenced by getStmtData().

◆ getStmtData() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtData ( const Stmt * S) const
inline

Definition at line 124 of file DataflowValues.h.

References DataflowValues(), and getStmtData().

◆ getStmtDataMap() [1/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
StmtDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtDataMap ( )
inline

getStmtDataMap - Retrieves the internal map between Stmts and dataflow values.

Definition at line 144 of file DataflowValues.h.

References StmtDataMap.

Referenced by getStmtDataMap().

◆ getStmtDataMap() [2/2]

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const StmtDataMapTy & clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtDataMap ( ) const
inline

Definition at line 149 of file DataflowValues.h.

References DataflowValues(), and getStmtDataMap().

◆ InitializeValues()

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
void clang::DataflowValues< ValueTypes, _AnalysisDirTag >::InitializeValues ( const CFG & cfg)
inline

InitializeValues - Invoked by the solver to initialize state needed for dataflow analysis.

This method is usually specialized by subclasses.

Definition at line 82 of file DataflowValues.h.

◆ isBackwardAnalysis()

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
bool clang::DataflowValues< ValueTypes, _AnalysisDirTag >::isBackwardAnalysis ( )
inline

isBackwardAnalysis - Returns true if the dataflow values are computed from a backward analysis.

Definition at line 66 of file DataflowValues.h.

References isForwardAnalysis().

◆ isForwardAnalysis()

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
bool clang::DataflowValues< ValueTypes, _AnalysisDirTag >::isForwardAnalysis ( )
inline

isForwardAnalysis - Returns true if the dataflow values are computed from a forward analysis.

Definition at line 62 of file DataflowValues.h.

References isForwardAnalysis().

Referenced by isBackwardAnalysis(), and isForwardAnalysis().

Member Data Documentation

◆ AnalysisData

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
AnalysisDataTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::AnalysisData
protected

Definition at line 168 of file DataflowValues.h.

Referenced by getAnalysisData(), and getAnalysisData().

◆ BlockDataMap

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
BlockDataMapTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::BlockDataMap
protected

Definition at line 166 of file DataflowValues.h.

Referenced by getBlockData(), getBlockDataMap(), and getBlockDataMap().

◆ EdgeDataMap

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
EdgeDataMapTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::EdgeDataMap
protected

Definition at line 165 of file DataflowValues.h.

Referenced by getEdgeData(), getEdgeDataMap(), and getEdgeDataMap().

◆ StmtDataMap

template<typename ValueTypes, typename _AnalysisDirTag = dataflow::forward_analysis_tag>
StmtDataMapTy* clang::DataflowValues< ValueTypes, _AnalysisDirTag >::StmtDataMap
protected

Definition at line 167 of file DataflowValues.h.

Referenced by DataflowValues(), getStmtData(), getStmtDataMap(), and ~DataflowValues().


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