|
LLZK 0.1.0
Veridise's ZK Language IR
|
#include <IntervalAnalysis.h>
Public Member Functions | |
| IntervalDataFlowAnalysis (mlir::DataFlowSolver &dataflowSolver, llvm::SMTSolverRef smt, const Field &f, bool propInputConstraints) | |
| void | visitCallControlFlowTransfer (mlir::CallOpInterface call, dataflow::CallControlFlowAction action, const Lattice &before, Lattice *after) override |
| The interval analysis is intraprocedural only for now, so this control flow transfer function passes no data to the callee and sets the post-call state to that of the pre-call state (i.e., calls are ignored). | |
| mlir::LogicalResult | visitOperation (mlir::Operation *op, const Lattice &before, Lattice *after) override |
| Visit an operation with the dense lattice before its execution. | |
| llvm::SMTExprRef | getOrCreateSymbol (const SourceRef &r) |
| Either return the existing SMT expression that corresponds to the SourceRef, or create one. | |
| Public Member Functions inherited from llzk::dataflow::DenseForwardDataFlowAnalysis< IntervalAnalysisLattice > | |
| virtual void | visitRegionBranchControlFlowTransfer (mlir::RegionBranchOpInterface branch, std::optional< unsigned > regionFrom, std::optional< unsigned > regionTo, const IntervalAnalysisLattice &before, IntervalAnalysisLattice *after) |
| Hook for customizing the behavior of lattice propagation along the control flow edges between regions and their parent op. | |
| Public Member Functions inherited from llzk::dataflow::AbstractDenseForwardDataFlowAnalysis | |
| mlir::LogicalResult | initialize (mlir::Operation *top) override |
| Initialize the analysis by visiting every program point whose execution may modify the program state; that is, every operation and block. | |
| mlir::LogicalResult | visit (mlir::ProgramPoint *point) override |
| Visit a program point that modifies the state of the program. | |
Additional Inherited Members | |
| Protected Member Functions inherited from llzk::dataflow::DenseForwardDataFlowAnalysis< IntervalAnalysisLattice > | |
| IntervalAnalysisLattice * | getLattice (mlir::LatticeAnchor anchor) override |
| Get the dense lattice on this lattice anchor. | |
| void | setToEntryState (AbstractDenseLattice *lattice) override |
| Set the dense lattice at control flow entry point and propagate an update if it changed. | |
| mlir::LogicalResult | visitOperationImpl (mlir::Operation *op, const AbstractDenseLattice &before, AbstractDenseLattice *after) final |
| Type-erased wrappers that convert the abstract dense lattice to a derived lattice and invoke the virtual hooks operating on the derived lattice. | |
| void | visitCallControlFlowTransfer (mlir::CallOpInterface call, CallControlFlowAction action, const AbstractDenseLattice &before, AbstractDenseLattice *after) final |
| Propagate the dense lattice forward along the call control flow edge, which can be either entering or exiting the callee. | |
| void | visitRegionBranchControlFlowTransfer (mlir::RegionBranchOpInterface branch, std::optional< unsigned > regionFrom, std::optional< unsigned > regionTo, const AbstractDenseLattice &before, AbstractDenseLattice *after) final |
| Propagate the dense lattice forward along the control flow edge from regionFrom to regionTo regions of the branch operation. | |
| Protected Member Functions inherited from llzk::dataflow::AbstractDenseForwardDataFlowAnalysis | |
| const AbstractDenseLattice * | getLatticeFor (mlir::ProgramPoint *dependent, mlir::LatticeAnchor anchor) |
| Get the dense lattice on the given lattice anchor and add dependent as its dependency. | |
| void | join (AbstractDenseLattice *lhs, const AbstractDenseLattice &rhs) |
| Join a lattice with another and propagate an update if it changed. | |
| virtual mlir::LogicalResult | processOperation (mlir::Operation *op) |
| Visit an operation. | |
| void | visitRegionBranchOperation (mlir::ProgramPoint *point, mlir::RegionBranchOpInterface branch, AbstractDenseLattice *after) |
| Visit a program point within a region branch operation with predecessors in it. | |
| Protected Attributes inherited from llzk::dataflow::AbstractDenseForwardDataFlowAnalysis | |
| mlir::SymbolTableCollection | tables |
| LLZK: Added for use of symbol helper caching. | |
Definition at line 265 of file IntervalAnalysis.h.
|
inlineexplicit |
Definition at line 275 of file IntervalAnalysis.h.
| llvm::SMTExprRef llzk::IntervalDataFlowAnalysis::getOrCreateSymbol | ( | const SourceRef & | r | ) |
Either return the existing SMT expression that corresponds to the SourceRef, or create one.
| r |
Definition at line 705 of file IntervalAnalysis.cpp.
|
overridevirtual |
The interval analysis is intraprocedural only for now, so this control flow transfer function passes no data to the callee and sets the post-call state to that of the pre-call state (i.e., calls are ignored).
action == CallControlFlowAction::Enter indicates that:
action == CallControlFlowAction::Exit indicates that:
action == CallControlFlowAction::External indicates that:
Reimplemented from llzk::dataflow::DenseForwardDataFlowAnalysis< IntervalAnalysisLattice >.
Definition at line 410 of file IntervalAnalysis.cpp.
|
overridevirtual |
Visit an operation with the dense lattice before its execution.
This function is expected to set the dense lattice after its execution and trigger change propagation in case of change.
Implements llzk::dataflow::DenseForwardDataFlowAnalysis< IntervalAnalysisLattice >.
Definition at line 464 of file IntervalAnalysis.cpp.