LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
Loading...
Searching...
No Matches
llzk::dataflow::AbstractSparseForwardDataFlowAnalysis Class Reference

Compatibility adapter over MLIR sparse forward data-flow analysis. More...

#include <SparseAnalysis.h>

Inheritance diagram for llzk::dataflow::AbstractSparseForwardDataFlowAnalysis:
[legend]
Collaboration diagram for llzk::dataflow::AbstractSparseForwardDataFlowAnalysis:
[legend]

Public Member Functions

mlir::LogicalResult initialize (mlir::Operation *top) override
 Initialize the analysis while preserving the program-order visitation of the old LLZK sparse analysis port.
mlir::LogicalResult visit (mlir::ProgramPoint *point) override
 Delegate block starts and result-producing operations to upstream MLIR.

Protected Member Functions

 AbstractSparseForwardDataFlowAnalysis (mlir::DataFlowSolver &s)

Protected Attributes

mlir::SymbolTableCollection tables
 LLZK: Kept as a compatibility cache for analyses that derived from the old ported class and used this protected member.

Detailed Description

Compatibility adapter over MLIR sparse forward data-flow analysis.

Upstream MLIR owns the ordinary sparse forward analysis behavior, including result-producing operation transfer, block-start handling, block argument propagation, call/result propagation, region successor propagation, and interaction with Executable / PredecessorState.

LLZK additionally needs transfer functions to run for live operations with no results because several important LLZK effects are modeled that way: constraints, assertions, member writes, and array writes. This adapter keeps the historical LLZK class name and restores only that zero-result operation path.

Definition at line 62 of file SparseAnalysis.h.

Constructor & Destructor Documentation

◆ AbstractSparseForwardDataFlowAnalysis()

llzk::dataflow::AbstractSparseForwardDataFlowAnalysis::AbstractSparseForwardDataFlowAnalysis ( mlir::DataFlowSolver & s)
explicitprotected

Definition at line 30 of file SparseAnalysis.cpp.

Member Function Documentation

◆ initialize()

LogicalResult llzk::dataflow::AbstractSparseForwardDataFlowAnalysis::initialize ( mlir::Operation * top)
override

Initialize the analysis while preserving the program-order visitation of the old LLZK sparse analysis port.

Result-producing operations and block starts are still visited through upstream MLIR. LLZK only handles the extra zero-result operation path.

Definition at line 33 of file SparseAnalysis.cpp.

◆ visit()

LogicalResult llzk::dataflow::AbstractSparseForwardDataFlowAnalysis::visit ( mlir::ProgramPoint * point)
override

Delegate block starts and result-producing operations to upstream MLIR.

Only zero-result operations need LLZK-specific handling.

Definition at line 47 of file SparseAnalysis.cpp.

Member Data Documentation

◆ tables

mlir::SymbolTableCollection llzk::dataflow::AbstractSparseForwardDataFlowAnalysis::tables
protected

LLZK: Kept as a compatibility cache for analyses that derived from the old ported class and used this protected member.

Definition at line 83 of file SparseAnalysis.h.


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