From c07cda9e55f1aec1d2a417dc56598b9cfce4ca5b Mon Sep 17 00:00:00 2001 From: guipublic Date: Wed, 15 Jan 2025 13:33:49 +0000 Subject: [PATCH 1/3] do not remove memory blocks used as brillig input --- acvm-repo/acvm/src/compiler/optimizers/unused_memory.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/acvm-repo/acvm/src/compiler/optimizers/unused_memory.rs b/acvm-repo/acvm/src/compiler/optimizers/unused_memory.rs index 1963430210f..1325a3b03cd 100644 --- a/acvm-repo/acvm/src/compiler/optimizers/unused_memory.rs +++ b/acvm-repo/acvm/src/compiler/optimizers/unused_memory.rs @@ -1,4 +1,4 @@ -use acir::circuit::{opcodes::BlockId, Circuit, Opcode}; +use acir::circuit::{brillig::BrilligInputs, opcodes::BlockId, Circuit, Opcode}; use std::collections::HashSet; /// `UnusedMemoryOptimizer` will remove initializations of memory blocks which are unused. @@ -29,6 +29,13 @@ impl UnusedMemoryOptimizer { Opcode::MemoryOp { block_id, .. } => { unused_memory_initialization.remove(block_id); } + Opcode::BrilligCall { inputs, .. } => { + for input in inputs { + if let BrilligInputs::MemoryArray(block) = input { + unused_memory_initialization.remove(block); + } + } + } _ => (), } } From be2001f9393b608e04360ac5989d1c379908b8d0 Mon Sep 17 00:00:00 2001 From: guipublic Date: Wed, 15 Jan 2025 13:38:47 +0000 Subject: [PATCH 2/3] add test case --- .../compile_success_no_bug/regression_7062/Nargo.toml | 7 +++++++ .../compile_success_no_bug/regression_7062/src/main.nr | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 test_programs/compile_success_no_bug/regression_7062/Nargo.toml create mode 100644 test_programs/compile_success_no_bug/regression_7062/src/main.nr diff --git a/test_programs/compile_success_no_bug/regression_7062/Nargo.toml b/test_programs/compile_success_no_bug/regression_7062/Nargo.toml new file mode 100644 index 00000000000..0e11219ad98 --- /dev/null +++ b/test_programs/compile_success_no_bug/regression_7062/Nargo.toml @@ -0,0 +1,7 @@ +[package] +name = "regression_7062" +type = "bin" +authors = [""] +compiler_version = ">=0.31.0" + +[dependencies] diff --git a/test_programs/compile_success_no_bug/regression_7062/src/main.nr b/test_programs/compile_success_no_bug/regression_7062/src/main.nr new file mode 100644 index 00000000000..eeb71e1e7ba --- /dev/null +++ b/test_programs/compile_success_no_bug/regression_7062/src/main.nr @@ -0,0 +1,6 @@ +fn main(args: [Field; 2]) { + /// Safety: n/a + unsafe { store(args) }; +} + +pub unconstrained fn store(_: [Field]) {} \ No newline at end of file From f3306ca8102adce725e83a90197b4d44cdbb5baf Mon Sep 17 00:00:00 2001 From: guipublic Date: Wed, 15 Jan 2025 14:16:16 +0000 Subject: [PATCH 3/3] discard underconstrained bug --- .../compile_success_no_bug/regression_7062/src/main.nr | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test_programs/compile_success_no_bug/regression_7062/src/main.nr b/test_programs/compile_success_no_bug/regression_7062/src/main.nr index eeb71e1e7ba..c640062b45b 100644 --- a/test_programs/compile_success_no_bug/regression_7062/src/main.nr +++ b/test_programs/compile_success_no_bug/regression_7062/src/main.nr @@ -1,6 +1,8 @@ fn main(args: [Field; 2]) { /// Safety: n/a unsafe { store(args) }; + // Dummy test to remove the 'underconstraint bug' + assert(args[0] + args[1] != 0); } pub unconstrained fn store(_: [Field]) {} \ No newline at end of file