|
LLZK 3.0.0
An open-source IR for Zero Knowledge (ZK) circuits
|
This file implements the -llzk-inline-structs pass. More...
#include "llzk/Dialect/Struct/Transforms/InlineStructsPass.h"#include "llzk/Analysis/SymbolUseGraph.h"#include "llzk/Dialect/Constrain/IR/Ops.h"#include "llzk/Dialect/Felt/IR/Ops.h"#include "llzk/Dialect/Function/IR/Ops.h"#include "llzk/Dialect/Polymorphic/IR/Ops.h"#include "llzk/Dialect/Struct/IR/Ops.h"#include "llzk/Dialect/Struct/Transforms/TransformationPasses.h"#include "llzk/Transforms/LLZKConversionUtils.h"#include "llzk/Util/Debug.h"#include "llzk/Util/SymbolHelper.h"#include "llzk/Util/SymbolLookup.h"#include <mlir/IR/BuiltinOps.h>#include <mlir/Transforms/InliningUtils.h>#include <mlir/Transforms/WalkPatternRewriteDriver.h>#include <llvm/ADT/DenseMap.h>#include <llvm/ADT/SmallPtrSet.h>#include <llvm/ADT/SmallVector.h>#include <llvm/ADT/StringMap.h>#include <llvm/ADT/TypeSwitch.h>#include <llvm/Support/Debug.h>#include <concepts>#include <optional>#include "llzk/Dialect/Struct/Transforms/TransformationPasses.h.inc"Go to the source code of this file.
Classes | |
| class | llzk::component::impl::InlineStructsPassBase< DerivedT > |
Namespaces | |
| namespace | llzk |
| namespace | llzk::component |
| namespace | llzk::component::impl |
Concepts | |
| concept | @131302103075115236161030145331006346253030210005::HasContainsOp |
Macros | |
| #define | GEN_PASS_DEF_INLINESTRUCTSPASS |
| #define | DEBUG_TYPE "llzk-inline-structs" |
Functions | |
| std::unique_ptr<::mlir::Pass > | llzk::component::impl::createInlineStructsPass () |
| std::unique_ptr<::mlir::Pass > | llzk::component::impl::createInlineStructsPass (InlineStructsPassOptions options) |
| std::unique_ptr<::mlir::Pass > | llzk::component::createInlineStructsPass () |
| std::unique_ptr<::mlir::Pass > | llzk::component::createInlineStructsPass (InlineStructsPassOptions options) |
| LogicalResult | performInlining (SymbolTableCollection &tables, InliningPlan &plan) |
| Execute the inlining plan one caller struct at a time, accumulating per-callee member replacement maps and then finalizing each caller after all requested callees have been inlined. | |
This file implements the -llzk-inline-structs pass.
This pass should be run after llzk-flatten to ensure structs do not have template parameters (this restriction may be removed in the future).
This pass also assumes that all subcomponents that are created by calling a struct "@compute" function are ultimately written to exactly one member within the current struct.
Definition in file InlineStructsPass.cpp.
| #define DEBUG_TYPE "llzk-inline-structs" |
Definition at line 61 of file InlineStructsPass.cpp.
| #define GEN_PASS_DEF_INLINESTRUCTSPASS |
Definition at line 51 of file InlineStructsPass.cpp.
| LogicalResult performInlining | ( | SymbolTableCollection & | tables, |
| InliningPlan & | plan ) |
Execute the inlining plan one caller struct at a time, accumulating per-callee member replacement maps and then finalizing each caller after all requested callees have been inlined.
Definition at line 907 of file InlineStructsPass.cpp.