clang API Documentation

Public Types | Public Member Functions | Protected Attributes
clang::DataflowValues< ValueTypes, _AnalysisDirTag > Class Template Reference

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

#include <DataflowValues.h>

Collaboration diagram for clang::DataflowValues< ValueTypes, _AnalysisDirTag >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef ValueTypes::ValTy ValTy
typedef ValueTypes::AnalysisDataTy AnalysisDataTy
typedef _AnalysisDirTag AnalysisDirTag
typedef llvm::DenseMap
< ProgramPoint, ValTy
EdgeDataMapTy
typedef llvm::DenseMap< const
CFGBlock *, ValTy
BlockDataMapTy
typedef llvm::DenseMap< const
Stmt *, ValTy
StmtDataMapTy

Public Member Functions

bool isForwardAnalysis ()
bool isBackwardAnalysis ()
 DataflowValues ()
 ~DataflowValues ()
void InitializeValues (const CFG &cfg)
ValTygetEdgeData (const BlockEdge &E)
const ValTygetEdgeData (const BlockEdge &E) const
ValTygetBlockData (const CFGBlock *B)
const ValTygetBlockData (const CFGBlock *B) const
ValTygetStmtData (const Stmt *S)
const ValTygetStmtData (const Stmt *S) const
EdgeDataMapTygetEdgeDataMap ()
const EdgeDataMapTygetEdgeDataMap () const
BlockDataMapTygetBlockDataMap ()
const BlockDataMapTygetBlockDataMap () const
StmtDataMapTygetStmtDataMap ()
const StmtDataMapTygetStmtDataMap () const
AnalysisDataTygetAnalysisData ()
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

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

Definition at line 49 of file DataflowValues.h.

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

Definition at line 50 of file DataflowValues.h.

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

Definition at line 52 of file DataflowValues.h.

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

Definition at line 51 of file DataflowValues.h.

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

Definition at line 53 of file DataflowValues.h.

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

Definition at line 48 of file DataflowValues.h.


Constructor & Destructor Documentation

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

Definition at line 77 of file DataflowValues.h.

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

Member Function Documentation

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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::AnalysisData.

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const AnalysisDataTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getAnalysisData ( ) const [inline]
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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::BlockDataMap.

Referenced by clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockData().

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockData ( const CFGBlock B) const [inline]
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 correpsond to the dataflow values at the end of the block.

Definition at line 139 of file DataflowValues.h.

References clang::DataflowValues< ValueTypes, _AnalysisDirTag >::BlockDataMap.

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const BlockDataMapTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getBlockDataMap ( ) const [inline]
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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::EdgeDataMap.

Referenced by clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeData().

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeData ( const BlockEdge E) const [inline]
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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::EdgeDataMap.

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const EdgeDataMapTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getEdgeDataMap ( ) const [inline]
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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::StmtDataMap.

Referenced by clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtData().

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const ValTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtData ( const Stmt S) const [inline]
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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::StmtDataMap.

Referenced by clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtDataMap().

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
const StmtDataMapTy& clang::DataflowValues< ValueTypes, _AnalysisDirTag >::getStmtDataMap ( ) const [inline]
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.

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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::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 clang::DataflowValues< ValueTypes, _AnalysisDirTag >::isForwardAnalysis().

Referenced by clang::DataflowValues< ValueTypes, _AnalysisDirTag >::isBackwardAnalysis(), and clang::DataflowValues< ValueTypes, _AnalysisDirTag >::isForwardAnalysis().


Member Data Documentation

template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
AnalysisDataTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::AnalysisData [protected]
template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
BlockDataMapTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::BlockDataMap [protected]
template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
EdgeDataMapTy clang::DataflowValues< ValueTypes, _AnalysisDirTag >::EdgeDataMap [protected]
template<typename ValueTypes , typename _AnalysisDirTag = dataflow::forward_analysis_tag>
StmtDataMapTy* clang::DataflowValues< ValueTypes, _AnalysisDirTag >::StmtDataMap [protected]

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