|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Reusable BaseUserAnalyzer that detects pointer escapes. More...
#include <sdfg/analysis/pointer_analyzers.h>
Public Member Functions | |
| PointerEscapeAnalyzer (const StructuredSDFG &sdfg, Policy &policy) | |
| void | use_as_return_src (const std::string &container, const Return &ret) 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 |
| 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_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 |
| 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 |
Reusable BaseUserAnalyzer that detects pointer escapes.
For each of the 5 BaseUserAnalyzer callbacks, it checks whether the access involves a pointer-typed container and whether the operation constitutes an escape (value leaks out of our control). 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.
If the policy implements the EscapeDetailsPolicy concept, it will make a more specific call for lib-nodes, as they can vary greatly in what they do with the pointer.
|
inline |
|
inlineoverridevirtual |
Implements sdfg::users::BaseUserAnalyzer.
|
inlineoverridevirtual |
Implements sdfg::users::BaseUserAnalyzer.
|
inlineoverridevirtual |
Implements sdfg::users::BaseUserAnalyzer.
|
inlineoverridevirtual |
Implements sdfg::users::BaseUserAnalyzer.
|
inlineoverridevirtual |
Implements sdfg::users::BaseUserAnalyzer.