From c098734e20af932a419c80120a22d0e0f2ff9bdd Mon Sep 17 00:00:00 2001 From: Mars Saxman Date: Mon, 28 Oct 2024 08:17:31 -0700 Subject: [PATCH] restore eval's skip-terminator behavior; bibc decoder adds expected ReturnOp --- zirgen/Dialect/BigInt/Bytecode/decode.cpp | 2 ++ zirgen/Dialect/BigInt/IR/Eval.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/zirgen/Dialect/BigInt/Bytecode/decode.cpp b/zirgen/Dialect/BigInt/Bytecode/decode.cpp index a5f9ccc9..c33f69d6 100644 --- a/zirgen/Dialect/BigInt/Bytecode/decode.cpp +++ b/zirgen/Dialect/BigInt/Bytecode/decode.cpp @@ -149,6 +149,8 @@ mlir::func::FuncOp decode(mlir::ModuleOp module, const Program& prog) { } } + // Add terminator op, for the sake of propriety. + builder.create(loc); return out; } diff --git a/zirgen/Dialect/BigInt/IR/Eval.cpp b/zirgen/Dialect/BigInt/IR/Eval.cpp index 0959e302..10b9d52d 100644 --- a/zirgen/Dialect/BigInt/IR/Eval.cpp +++ b/zirgen/Dialect/BigInt/IR/Eval.cpp @@ -188,7 +188,7 @@ EvalOutput eval(func::FuncOp inFunc, ArrayRef witnessValues) { llvm::DenseMap polys; - for (Operation& origOp : inFunc.getBody().front()) { + for (Operation& origOp : inFunc.getBody().front().without_terminator()) { llvm::TypeSwitch(&origOp) .Case([&](auto op) { APInt val = witnessValues[op.getLabel()];