docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::passes::SymbolPropagation Class Reference

Pass that propagates symbolic assignments through the SDFG. More...

#include <sdfg/passes/symbolic/symbol_propagation.h>

Inheritance diagram for sdfg::passes::SymbolPropagation:
[legend]

Public Member Functions

 SymbolPropagation ()
 Constructs a new SymbolPropagation pass.
virtual std::string name () override
 Returns the name of this pass.
virtual bool run_pass (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
 Executes the symbol propagation pass on the SDFG.
Public Member Functions inherited from sdfg::passes::Pass
 Pass ()=default
 Pass (const Options &options)
virtual ~Pass ()=default
virtual std::vector< OptionSpec > options ()
bool run (builder::SDFGBuilder &builder, bool create_report=false)
bool run (builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, bool create_report=false)
virtual bool run_pass (builder::SDFGBuilder &builder)
virtual void invalidates (analysis::AnalysisManager &analysis_manager, bool applied)

Additional Inherited Members

Protected Member Functions inherited from sdfg::passes::Pass
template<class T>
T option (const OptionKey< T > &key, T fallback=T{}) const

Detailed Description

Pass that propagates symbolic assignments through the SDFG.

This pass performs forward and reverse propagation of symbolic expressions throughout the SDFG, replacing symbol uses with their assigned values where appropriate. It handles various SDFG elements including:

  • Transitions (symbol assignments)
  • Memlets (data access patterns)
  • Control flow constructs (if-else, for, while)
  • Access nodes and library nodes

The pass performs two main operations:

  1. Forward propagation: Replaces symbol reads with their assigned values when the write dominates the read and no conflicting writes occur.
  2. Reverse propagation: Moves symbol assignments from a join point into the branches that define the symbols.

Only transient integer scalar symbols are considered for propagation.

Constructor & Destructor Documentation

◆ SymbolPropagation()

sdfg::passes::SymbolPropagation::SymbolPropagation ( )

Constructs a new SymbolPropagation pass.

Member Function Documentation

◆ name()

virtual std::string sdfg::passes::SymbolPropagation::name ( )
overridevirtual

Returns the name of this pass.

Returns
The string "SymbolPropagation"

Implements sdfg::passes::Pass.

◆ run_pass()

virtual bool sdfg::passes::SymbolPropagation::run_pass ( builder::StructuredSDFGBuilder & builder,
analysis::AnalysisManager & analysis_manager )
overridevirtual

Executes the symbol propagation pass on the SDFG.

Parameters
builderThe structured SDFG builder containing the SDFG to optimize
analysis_managerThe analysis manager providing required analyses
Returns
true if the pass modified the SDFG, false otherwise

Reimplemented from sdfg::passes::Pass.


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