docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::analysis::PointerOverwriteAnalyzer< Policy > Class Template Reference

Reusable BaseUserAnalyzer that detects pointer overwrites. More...

#include <sdfg/analysis/pointer_analyzers.h>

Inheritance diagram for sdfg::analysis::PointerOverwriteAnalyzer< Policy >:
[legend]

Public Member Functions

 PointerOverwriteAnalyzer (const StructuredSDFG &sdfg, Policy &policy)
void use_as_dst_node (const std::string &container, const data_flow::AccessNode &node, const data_flow::Memlet &edge, const Block &block) override
void use_as_symbol_write (const symbolic::Symbol &container, const ControlFlowNode *node, const Element *user, SymbolWriteLocation loc) override
void use_as_return_src (const std::string &container, const Return &ret) override
void use_as_src_node (const std::string &container, const data_flow::AccessNode &node, const data_flow::Memlet &edge, const Block &block) override
void use_as_symbol_read (const std::string &container, const ControlFlowNode *node, const Element *user, SymbolReadLocation loc, int loc_index, symbolic::Expression expr) override
Public Member Functions inherited from sdfg::users::BaseUserAnalyzer
virtual ~BaseUserAnalyzer ()=default

Additional Inherited Members

Public Types inherited from sdfg::users::BaseUserAnalyzer
enum class  SymbolReadLocation {
  Assignment , LoopHeader , IfHeader , MemletSubset ,
  LibraryNode
}
enum class  SymbolWriteLocation { Assignment , LoopHeader }
Static Public Attributes inherited from sdfg::users::BaseUserAnalyzer
static constexpr int LOC_LOOP_READ_INIT = 0
static constexpr int LOC_LOOP_READ_CONDITION = 1
static constexpr int LOC_LOOP_READ_UPDATE = 2

Detailed Description

template<OverwritePolicy Policy>
class sdfg::analysis::PointerOverwriteAnalyzer< Policy >

Reusable BaseUserAnalyzer that detects pointer overwrites.

For each of the 5 BaseUserAnalyzer callbacks, it checks whether the access involves a pointer-typed container and whether the operation constitutes an overwrite (the pointer variable itself is reassigned). Detected events are forwarded to the policy object via static dispatch.

Does NOT walk the SDFG itself — must be driven by a BaseUserVisitor (or future CompositeUserVisitor) that calls the callbacks.

Constructor & Destructor Documentation

◆ PointerOverwriteAnalyzer()

template<OverwritePolicy Policy>
sdfg::analysis::PointerOverwriteAnalyzer< Policy >::PointerOverwriteAnalyzer ( const StructuredSDFG & sdfg,
Policy & policy )
inline

Member Function Documentation

◆ use_as_dst_node()

template<OverwritePolicy Policy>
void sdfg::analysis::PointerOverwriteAnalyzer< Policy >::use_as_dst_node ( const std::string & container,
const data_flow::AccessNode & node,
const data_flow::Memlet & edge,
const Block & block )
inlineoverridevirtual

◆ use_as_return_src()

template<OverwritePolicy Policy>
void sdfg::analysis::PointerOverwriteAnalyzer< Policy >::use_as_return_src ( const std::string & container,
const Return & ret )
inlineoverridevirtual

◆ use_as_src_node()

template<OverwritePolicy Policy>
void sdfg::analysis::PointerOverwriteAnalyzer< Policy >::use_as_src_node ( const std::string & container,
const data_flow::AccessNode & node,
const data_flow::Memlet & edge,
const Block & block )
inlineoverridevirtual

◆ use_as_symbol_read()

template<OverwritePolicy Policy>
void sdfg::analysis::PointerOverwriteAnalyzer< Policy >::use_as_symbol_read ( const std::string & container,
const ControlFlowNode * node,
const Element * user,
SymbolReadLocation loc,
int loc_index,
symbolic::Expression expr )
inlineoverridevirtual

◆ use_as_symbol_write()

template<OverwritePolicy Policy>
void sdfg::analysis::PointerOverwriteAnalyzer< Policy >::use_as_symbol_write ( const symbolic::Symbol & container,
const ControlFlowNode * node,
const Element * user,
SymbolWriteLocation loc )
inlineoverridevirtual

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