From f9376791b003ce10a1de9e3f4cf0cb705aaa3e10 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut Date: Mon, 10 Mar 2025 17:56:03 +0300 Subject: [PATCH 1/3] Fix, add test --- .../check_for_underconstrained_values.rs | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs b/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs index 752b2c82d09..5c55bb8b348 100644 --- a/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs +++ b/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs @@ -336,6 +336,12 @@ impl DependencyContext { if !visited { let results = function.dfg.instruction_results(*instruction); + + // Calls with no results (e.g. print) shouldn't be checked + if results.is_empty() { + return; + } + let current_tainted = BrilligTaintedIds::new(function, arguments, results); @@ -1418,4 +1424,32 @@ mod test { let ssa_level_warnings = ssa.check_for_missing_brillig_constraints(true); assert_eq!(ssa_level_warnings.len(), 0); } + + #[test] + #[traced_test] + /// No-result calls (e.g. print) shouldn't trigger the check + fn test_no_result_brillig_calls() { + let program = r#" + acir(inline) fn main f0 { + b0(): + call f1(Field 1) + return Field 1 + } + acir(inline) fn println f1 { + b0(v0: Field): + call f2(u1 1, v0) + return + } + brillig(inline) fn print_unconstrained f2 { + b0(v0: u1, v1: Field): + v14 = make_array b"{\"kind\":\"field\"}" + call print(v0, v1, v14, u1 0) + return + } + "#; + + let mut ssa = Ssa::from_str(program).unwrap(); + let ssa_level_warnings = ssa.check_for_missing_brillig_constraints(false); + assert_eq!(ssa_level_warnings.len(), 0); + } } From 1e7e0006de04b666a684583810dd334f38b9dac8 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut Date: Mon, 10 Mar 2025 17:58:03 +0300 Subject: [PATCH 2/3] Remove stdlib call from test --- .../src/ssa/checks/check_for_underconstrained_values.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs b/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs index 5c55bb8b348..efcafc3f83b 100644 --- a/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs +++ b/compiler/noirc_evaluator/src/ssa/checks/check_for_underconstrained_values.rs @@ -1442,8 +1442,6 @@ mod test { } brillig(inline) fn print_unconstrained f2 { b0(v0: u1, v1: Field): - v14 = make_array b"{\"kind\":\"field\"}" - call print(v0, v1, v14, u1 0) return } "#; From 89ca78172ef2501a10ebcc9f38ac6132b36882a6 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut Date: Mon, 10 Mar 2025 18:30:19 +0300 Subject: [PATCH 3/3] Move a regression test to no_bug as println doesn't trigger the check --- .../regression_7103/Nargo.toml | 0 .../regression_7103/src/main.nr | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename test_programs/{compile_success_with_bug => compile_success_no_bug}/regression_7103/Nargo.toml (100%) rename test_programs/{compile_success_with_bug => compile_success_no_bug}/regression_7103/src/main.nr (100%) diff --git a/test_programs/compile_success_with_bug/regression_7103/Nargo.toml b/test_programs/compile_success_no_bug/regression_7103/Nargo.toml similarity index 100% rename from test_programs/compile_success_with_bug/regression_7103/Nargo.toml rename to test_programs/compile_success_no_bug/regression_7103/Nargo.toml diff --git a/test_programs/compile_success_with_bug/regression_7103/src/main.nr b/test_programs/compile_success_no_bug/regression_7103/src/main.nr similarity index 100% rename from test_programs/compile_success_with_bug/regression_7103/src/main.nr rename to test_programs/compile_success_no_bug/regression_7103/src/main.nr