LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
AnalysisWrappers.h File Reference

Convenience classes for a frequent pattern of dataflow analysis used in LLZK, where an analysis is run across all StructDefOps contained within a module, where each of those analyses may need to reference the analysis results from other StructDefOps. More...

#include "llzk/Analysis/DenseAnalysis.h"
#include "llzk/Dialect/Struct/IR/Ops.h"
#include "llzk/Util/Compare.h"
#include "llzk/Util/ErrorHelper.h"
#include "llzk/Util/SymbolHelper.h"
#include <mlir/IR/BuiltinOps.h>
#include <mlir/Pass/AnalysisManager.h>
#include <map>
Include dependency graph for AnalysisWrappers.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  llzk::StructAnalysis< Result, Context >
 This is the base class for a dataflow analysis designed to run on a single struct (i.e., a single component). More...
 
struct  llzk::NoContext
 An empty struct that is used for convenience for analyses that do not require any context. More...
 
class  llzk::ModuleAnalysis< Result, Context, StructAnalysisTy >
 An analysis wrapper that runs the given StructAnalysisTy struct analysis over all of the struct contained within the module. More...
 

Namespaces

namespace  llzk
 

Concepts

concept  llzk::StructAnalysisType
 Any type that is a subclass of StructAnalysis.
 

Detailed Description

Convenience classes for a frequent pattern of dataflow analysis used in LLZK, where an analysis is run across all StructDefOps contained within a module, where each of those analyses may need to reference the analysis results from other StructDefOps.

This pattern reoccurs due to the instantiation of subcomponents within components, which often requires the instantiating component to look up the results of an analysis on the subcomponent. This kind of lookup is not supported through mlir's AnalysisManager, as it only allows lookups on nested operations, not sibling operations. This pattern allows subcomponents to instead use the ModuleOp's analysis manager, allowing components to query analyses for any component in the module.

Definition in file AnalysisWrappers.h.