From 9ddc3d446e21c84e006b4892843f25543279588c Mon Sep 17 00:00:00 2001 From: guipublic Date: Thu, 6 Jun 2024 10:08:57 +0000 Subject: [PATCH 1/9] count brillig opcodes in nargo info --- tooling/nargo_cli/src/cli/info_cmd.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/tooling/nargo_cli/src/cli/info_cmd.rs b/tooling/nargo_cli/src/cli/info_cmd.rs index 7c50e907dc9..634f138b064 100644 --- a/tooling/nargo_cli/src/cli/info_cmd.rs +++ b/tooling/nargo_cli/src/cli/info_cmd.rs @@ -102,8 +102,7 @@ pub(crate) fn run(args: InfoCommand, config: NargoConfig) -> Result<(), CliError } else { // Otherwise print human-readable table. if !info_report.programs.is_empty() { - let mut program_table = - table!([Fm->"Package", Fm->"Function", Fm->"Expression Width", Fm->"ACIR Opcodes"]); + let mut program_table = table!([Fm->"Package", Fm->"Function", Fm->"Expression Width", Fm->"ACIR Opcodes", Fm->"Brillig Opcodes"]); for program_info in info_report.programs { let program_rows: Vec = program_info.into(); @@ -178,6 +177,7 @@ struct ProgramInfo { #[serde(skip)] expression_width: ExpressionWidth, functions: Vec, + unconstrained_functions_opcodes: usize, } impl From for Vec { @@ -188,6 +188,7 @@ impl From for Vec { Fc->format!("{}", function.name), format!("{:?}", program_info.expression_width), Fc->format!("{}", function.acir_opcodes), + Fc->format!("{}", program_info.unconstrained_functions_opcodes), ] }) } @@ -236,6 +237,16 @@ fn count_opcodes_and_gates_in_program( acir_opcodes: function.opcodes.len(), }) .collect(); - - ProgramInfo { package_name: package.name.to_string(), expression_width, functions } + let unconstrained_functions_opcodes = compiled_program + .bytecode + .unconstrained_functions + .into_par_iter() + .map(|function| function.bytecode.len()) + .sum(); + ProgramInfo { + package_name: package.name.to_string(), + expression_width, + functions, + unconstrained_functions_opcodes, + } } From 37ae18f32052446f106519bb941f771ca743a3d4 Mon Sep 17 00:00:00 2001 From: guipublic Date: Fri, 7 Jun 2024 13:32:07 +0000 Subject: [PATCH 2/9] Add unconstrained functions name and bytecode count to nargo info --- compiler/noirc_driver/src/lib.rs | 2 ++ compiler/noirc_driver/src/program.rs | 2 ++ .../src/brillig/brillig_gen.rs | 4 ++- .../brillig/brillig_gen/brillig_directive.rs | 3 ++ .../src/brillig/brillig_ir/artifact.rs | 4 +++ compiler/noirc_evaluator/src/ssa.rs | 18 ++++++----- .../noirc_evaluator/src/ssa/acir_gen/mod.rs | 18 +++++++---- tooling/nargo/src/artifacts/program.rs | 4 +++ tooling/nargo_cli/src/cli/info_cmd.rs | 31 +++++++++++++++++-- 9 files changed, 70 insertions(+), 16 deletions(-) diff --git a/compiler/noirc_driver/src/lib.rs b/compiler/noirc_driver/src/lib.rs index 848d9987ca3..ea73cf0fdfe 100644 --- a/compiler/noirc_driver/src/lib.rs +++ b/compiler/noirc_driver/src/lib.rs @@ -548,6 +548,7 @@ pub fn compile_no_check( main_input_witnesses, main_return_witnesses, names, + brillig_names, error_types, } = create_program( program, @@ -576,5 +577,6 @@ pub fn compile_no_check( noir_version: NOIR_ARTIFACT_VERSION_STRING.to_string(), warnings, names, + brillig_names, }) } diff --git a/compiler/noirc_driver/src/program.rs b/compiler/noirc_driver/src/program.rs index 8e02de0b8b3..88460482928 100644 --- a/compiler/noirc_driver/src/program.rs +++ b/compiler/noirc_driver/src/program.rs @@ -29,4 +29,6 @@ pub struct CompiledProgram { pub warnings: Vec, /// Names of the functions in the program. These are used for more informative debugging and benchmarking. pub names: Vec, + /// Names of the unconstrained functions in the program. + pub brillig_names: Vec, } diff --git a/compiler/noirc_evaluator/src/brillig/brillig_gen.rs b/compiler/noirc_evaluator/src/brillig/brillig_gen.rs index 5576d673f1d..2ece4123a6b 100644 --- a/compiler/noirc_evaluator/src/brillig/brillig_gen.rs +++ b/compiler/noirc_evaluator/src/brillig/brillig_gen.rs @@ -22,5 +22,7 @@ pub(crate) fn convert_ssa_function(func: &Function, enable_debug_trace: bool) -> BrilligBlock::compile(&mut function_context, &mut brillig_context, block, &func.dfg); } - brillig_context.artifact() + let mut artifact = brillig_context.artifact(); + artifact.name = func.name().to_string(); + artifact } diff --git a/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_directive.rs b/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_directive.rs index 74319595795..572be90b503 100644 --- a/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_directive.rs +++ b/compiler/noirc_evaluator/src/brillig/brillig_gen/brillig_directive.rs @@ -56,6 +56,7 @@ pub(crate) fn directive_invert() -> GeneratedBrillig { ], assert_messages: Default::default(), locations: Default::default(), + name: "directive_invert".to_string(), } } @@ -114,6 +115,7 @@ pub(crate) fn directive_quotient(bit_size: u32) -> GeneratedBrillig { ], assert_messages: Default::default(), locations: Default::default(), + name: "directive_field_quotient".to_string(), } } else { // Integer version @@ -167,6 +169,7 @@ pub(crate) fn directive_quotient(bit_size: u32) -> GeneratedBrillig { ], assert_messages: Default::default(), locations: Default::default(), + name: "directive_integer_quotient".to_string(), } } } diff --git a/compiler/noirc_evaluator/src/brillig/brillig_ir/artifact.rs b/compiler/noirc_evaluator/src/brillig/brillig_ir/artifact.rs index 99e922c1580..95c0921d951 100644 --- a/compiler/noirc_evaluator/src/brillig/brillig_ir/artifact.rs +++ b/compiler/noirc_evaluator/src/brillig/brillig_ir/artifact.rs @@ -22,6 +22,7 @@ pub(crate) struct GeneratedBrillig { pub(crate) byte_code: Vec>, pub(crate) locations: BTreeMap, pub(crate) assert_messages: BTreeMap, + pub(crate) name: String, } #[derive(Default, Debug, Clone)] @@ -49,6 +50,8 @@ pub(crate) struct BrilligArtifact { locations: BTreeMap, /// The current call stack. All opcodes that are pushed will be associated with this call stack. call_stack: CallStack, + /// Name of the function, only used for debugging purposes. + pub(crate) name: String, } /// A pointer to a location in the opcode. @@ -81,6 +84,7 @@ impl BrilligArtifact { byte_code: self.byte_code, locations: self.locations, assert_messages: self.assert_messages, + name: self.name, } } diff --git a/compiler/noirc_evaluator/src/ssa.rs b/compiler/noirc_evaluator/src/ssa.rs index 80a63f223e7..8a30070fee8 100644 --- a/compiler/noirc_evaluator/src/ssa.rs +++ b/compiler/noirc_evaluator/src/ssa.rs @@ -112,6 +112,7 @@ pub struct SsaProgramArtifact { pub main_input_witnesses: Vec, pub main_return_witnesses: Vec, pub names: Vec, + pub brillig_names: Vec, pub error_types: BTreeMap, } @@ -128,6 +129,7 @@ impl SsaProgramArtifact { main_input_witnesses: Vec::default(), main_return_witnesses: Vec::default(), names: Vec::default(), + brillig_names: Vec::default(), error_types, } } @@ -163,13 +165,14 @@ pub fn create_program( let func_sigs = program.function_signatures.clone(); let recursive = program.recursive; - let (generated_acirs, generated_brillig, error_types) = optimize_into_acir( - program, - enable_ssa_logging, - enable_brillig_logging, - force_brillig_output, - print_codegen_timings, - )?; + let (generated_acirs, generated_brillig, brillig_function_names, error_types) = + optimize_into_acir( + program, + enable_ssa_logging, + enable_brillig_logging, + force_brillig_output, + print_codegen_timings, + )?; assert_eq!( generated_acirs.len(), func_sigs.len(), @@ -192,6 +195,7 @@ pub fn create_program( program_artifact.add_circuit(circuit_artifact, is_main); is_main = false; } + program_artifact.brillig_names = brillig_function_names; Ok(program_artifact) } diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index 2aac083d727..51b5b808257 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -274,8 +274,12 @@ impl AcirValue { } } -pub(crate) type Artifacts = - (Vec, Vec>, BTreeMap); +pub(crate) type Artifacts = ( + Vec, + Vec>, + Vec, + BTreeMap, +); impl Ssa { #[tracing::instrument(level = "trace", skip_all)] @@ -318,15 +322,16 @@ impl Ssa { } generated_acir.name = function.name().to_owned(); + dbg!(&generated_acir.name); acirs.push(generated_acir); } } - - let brillig = vecmap(shared_context.generated_brillig, |brillig| BrilligBytecode { + let names = vecmap(&shared_context.generated_brillig, |brillig| brillig.name.clone()); + let brillig_op = vecmap(shared_context.generated_brillig, |brillig| BrilligBytecode { bytecode: brillig.byte_code, }); - Ok((acirs, brillig, self.error_selector_to_type)) + Ok((acirs, brillig_op, names, self.error_selector_to_type)) } } @@ -791,8 +796,9 @@ impl<'a> Context<'a> { None, )? } else { - let code = + let mut code = self.gen_brillig_for(func, arguments.clone(), brillig)?; + code.name = func.name().to_string(); let generated_pointer = self.shared_context.new_generated_pointer(); let output_values = self.acir_context.brillig_call( diff --git a/tooling/nargo/src/artifacts/program.rs b/tooling/nargo/src/artifacts/program.rs index 91f02157414..ffffc6345d5 100644 --- a/tooling/nargo/src/artifacts/program.rs +++ b/tooling/nargo/src/artifacts/program.rs @@ -37,6 +37,8 @@ pub struct ProgramArtifact { pub file_map: BTreeMap, pub names: Vec, + /// Names of the unconstrained functions in the program. + pub brillig_names: Vec, } impl From for ProgramArtifact { @@ -49,6 +51,7 @@ impl From for ProgramArtifact { debug_symbols: ProgramDebugInfo { debug_infos: compiled_program.debug }, file_map: compiled_program.file_map, names: compiled_program.names, + brillig_names: compiled_program.brillig_names, } } } @@ -64,6 +67,7 @@ impl From for CompiledProgram { file_map: program.file_map, warnings: vec![], names: program.names, + brillig_names: program.brillig_names, } } } diff --git a/tooling/nargo_cli/src/cli/info_cmd.rs b/tooling/nargo_cli/src/cli/info_cmd.rs index 634f138b064..b8bd8465211 100644 --- a/tooling/nargo_cli/src/cli/info_cmd.rs +++ b/tooling/nargo_cli/src/cli/info_cmd.rs @@ -178,11 +178,12 @@ struct ProgramInfo { expression_width: ExpressionWidth, functions: Vec, unconstrained_functions_opcodes: usize, + unconstrained_function: Vec, } impl From for Vec { fn from(program_info: ProgramInfo) -> Self { - vecmap(program_info.functions, |function| { + let mut main = vecmap(program_info.functions, |function| { row![ Fm->format!("{}", program_info.package_name), Fc->format!("{}", function.name), @@ -190,7 +191,17 @@ impl From for Vec { Fc->format!("{}", function.acir_opcodes), Fc->format!("{}", program_info.unconstrained_functions_opcodes), ] - }) + }); + main.extend(vecmap(program_info.unconstrained_function, |function| { + row![ + Fm->format!("{}", program_info.package_name), + Fc->format!("{}", function.name), + format!("N/A", ), + Fc->format!("N/A"), + Fc->format!("{}", function.acir_opcodes), + ] + })); + main } } @@ -237,16 +248,32 @@ fn count_opcodes_and_gates_in_program( acir_opcodes: function.opcodes.len(), }) .collect(); + + let opcodes_len: Vec = compiled_program + .bytecode + .unconstrained_functions + .iter() + .map(|func| func.bytecode.len()) + .collect(); let unconstrained_functions_opcodes = compiled_program .bytecode .unconstrained_functions .into_par_iter() .map(|function| function.bytecode.len()) .sum(); + let unconstrained_info: Vec = compiled_program + .brillig_names + .clone() + .iter() + .zip(opcodes_len) + .map(|(name, len)| FunctionInfo { name: name.clone(), acir_opcodes: len }) + .collect(); + ProgramInfo { package_name: package.name.to_string(), expression_width, functions, unconstrained_functions_opcodes, + unconstrained_function: unconstrained_info, } } From 3d824e193f2419fe8f8acc5ec4e0ddf5ae26cfae Mon Sep 17 00:00:00 2001 From: guipublic Date: Fri, 7 Jun 2024 13:42:46 +0000 Subject: [PATCH 3/9] fix unit tests --- compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index 51b5b808257..a2ede800e44 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -2896,7 +2896,7 @@ mod test { let ssa = builder.finish(); - let (acir_functions, _, _) = ssa + let (acir_functions, _, _, _) = ssa .into_acir(&Brillig::default()) .expect("Should compile manually written SSA into ACIR"); // Expected result: @@ -2991,7 +2991,7 @@ mod test { let ssa = builder.finish(); - let (acir_functions, _, _) = ssa + let (acir_functions, _, _, _) = ssa .into_acir(&Brillig::default()) .expect("Should compile manually written SSA into ACIR"); // The expected result should look very similar to the above test expect that the input witnesses of the `Call` @@ -3081,7 +3081,7 @@ mod test { let ssa = builder.finish(); - let (acir_functions, _, _) = ssa + let (acir_functions, _, _, _) = ssa .into_acir(&Brillig::default()) .expect("Should compile manually written SSA into ACIR"); @@ -3195,7 +3195,7 @@ mod test { let ssa = builder.finish(); let brillig = ssa.to_brillig(false); - let (acir_functions, brillig_functions, _) = + let (acir_functions, brillig_functions, _, _) = ssa.into_acir(&brillig).expect("Should compile manually written SSA into ACIR"); assert_eq!(acir_functions.len(), 1, "Should only have a `main` ACIR function"); @@ -3251,7 +3251,7 @@ mod test { // The Brillig bytecode we insert for the stdlib is hardcoded so we do not need to provide any // Brillig artifacts to the ACIR gen pass. - let (acir_functions, brillig_functions, _) = ssa + let (acir_functions, brillig_functions, _, _) = ssa .into_acir(&Brillig::default()) .expect("Should compile manually written SSA into ACIR"); @@ -3323,7 +3323,7 @@ mod test { let brillig = ssa.to_brillig(false); println!("{}", ssa); - let (acir_functions, brillig_functions, _) = + let (acir_functions, brillig_functions, _, _) = ssa.into_acir(&brillig).expect("Should compile manually written SSA into ACIR"); assert_eq!(acir_functions.len(), 1, "Should only have a `main` ACIR function"); @@ -3411,7 +3411,7 @@ mod test { let brillig = ssa.to_brillig(false); println!("{}", ssa); - let (acir_functions, brillig_functions, _) = + let (acir_functions, brillig_functions, _, _) = ssa.into_acir(&brillig).expect("Should compile manually written SSA into ACIR"); assert_eq!(acir_functions.len(), 2, "Should only have two ACIR functions"); From db95f786542c1ffb60f25fbfe02674cd3b112b85 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Wed, 14 Aug 2024 14:10:19 +0000 Subject: [PATCH 4/9] cargo fmt --- compiler/noirc_driver/src/lib.rs | 10 +--------- compiler/noirc_evaluator/src/ssa.rs | 6 ++++-- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/compiler/noirc_driver/src/lib.rs b/compiler/noirc_driver/src/lib.rs index 2f34589db60..1773cd9a3e9 100644 --- a/compiler/noirc_driver/src/lib.rs +++ b/compiler/noirc_driver/src/lib.rs @@ -578,15 +578,7 @@ pub fn compile_no_check( emit_ssa: if options.emit_ssa { Some(context.package_build_path.clone()) } else { None }, }; - let SsaProgramArtifact { - program, - debug, - warnings, - names, - brillig_names, - error_types, - .. - } = + let SsaProgramArtifact { program, debug, warnings, names, brillig_names, error_types, .. } = create_program(program, &ssa_evaluator_options)?; let abi = abi_gen::gen_abi(context, &main_function, return_visibility, error_types); diff --git a/compiler/noirc_evaluator/src/ssa.rs b/compiler/noirc_evaluator/src/ssa.rs index 5d1bdd9ecb0..9daf98e606b 100644 --- a/compiler/noirc_evaluator/src/ssa.rs +++ b/compiler/noirc_evaluator/src/ssa.rs @@ -204,8 +204,10 @@ pub fn create_program( let func_sigs = program.function_signatures.clone(); let recursive = program.recursive; - let ArtifactsAndWarnings((generated_acirs, generated_brillig, brillig_function_names, error_types), ssa_level_warnings) = - optimize_into_acir(program, options)?; + let ArtifactsAndWarnings( + (generated_acirs, generated_brillig, brillig_function_names, error_types), + ssa_level_warnings, + ) = optimize_into_acir(program, options)?; if options.force_brillig_output { assert_eq!( generated_acirs.len(), From 2265517eedb78acaa54a76a3c3844dfd0e010124 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Wed, 14 Aug 2024 14:33:03 +0000 Subject: [PATCH 5/9] update gen_brillig_for placing the name --- compiler/noirc_driver/src/lib.rs | 1 + compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 3 ++- tooling/nargo_cli/src/cli/info_cmd.rs | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/compiler/noirc_driver/src/lib.rs b/compiler/noirc_driver/src/lib.rs index 1773cd9a3e9..b28606d3739 100644 --- a/compiler/noirc_driver/src/lib.rs +++ b/compiler/noirc_driver/src/lib.rs @@ -557,6 +557,7 @@ pub fn compile_no_check( let force_compile = force_compile || options.print_acir || options.show_brillig + || options.force_brillig || options.show_ssa || options.emit_ssa; diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index d45d613e504..84021a773d9 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -331,7 +331,6 @@ impl Ssa { } generated_acir.name = function.name().to_owned(); - dbg!(&generated_acir.name); acirs.push(generated_acir); } } @@ -958,6 +957,8 @@ impl<'a> Context<'a> { BrilligFunctionContext::return_values(func), BrilligFunctionContext::function_id_to_function_label(func.id()), ); + entry_point.name = func.name().to_string(); + // Link the entry point with all dependencies while let Some(unresolved_fn_label) = entry_point.first_unresolved_function_call() { let artifact = &brillig.find_by_function_label(unresolved_fn_label.clone()); diff --git a/tooling/nargo_cli/src/cli/info_cmd.rs b/tooling/nargo_cli/src/cli/info_cmd.rs index 637c7b8749b..2fd189172d8 100644 --- a/tooling/nargo_cli/src/cli/info_cmd.rs +++ b/tooling/nargo_cli/src/cli/info_cmd.rs @@ -176,7 +176,7 @@ struct ProgramInfo { expression_width: ExpressionWidth, functions: Vec, unconstrained_functions_opcodes: usize, - unconstrained_function: Vec, + unconstrained_functions: Vec, } impl From for Vec { @@ -190,7 +190,7 @@ impl From for Vec { Fc->format!("{}", program_info.unconstrained_functions_opcodes), ] }); - main.extend(vecmap(program_info.unconstrained_function, |function| { + main.extend(vecmap(program_info.unconstrained_functions, |function| { row![ Fm->format!("{}", program_info.package_name), Fc->format!("{}", function.name), @@ -272,6 +272,6 @@ fn count_opcodes_and_gates_in_program( expression_width, functions, unconstrained_functions_opcodes, - unconstrained_function: unconstrained_info, + unconstrained_functions: unconstrained_info, } } From 8ddc4a9586a3e12127a9e95710f23d147ad2418e Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Wed, 14 Aug 2024 14:39:46 +0000 Subject: [PATCH 6/9] cargo fmt --- compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index 84021a773d9..f26896558c4 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -823,9 +823,9 @@ impl<'a> Context<'a> { None, )? } else { - let mut code = + let code = self.gen_brillig_for(func, arguments.clone(), brillig)?; - code.name = func.name().to_string(); + let generated_pointer = self.shared_context.new_generated_pointer(); let output_values = self.acir_context.brillig_call( From 8ad7276151e9336a1738d0d2a000802aecbca5f5 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Wed, 14 Aug 2024 14:43:33 +0000 Subject: [PATCH 7/9] update profiler tests --- tooling/profiler/src/cli/gates_flamegraph_cmd.rs | 1 + tooling/profiler/src/cli/opcodes_flamegraph_cmd.rs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/tooling/profiler/src/cli/gates_flamegraph_cmd.rs b/tooling/profiler/src/cli/gates_flamegraph_cmd.rs index e072c63f274..7c6e77917a5 100644 --- a/tooling/profiler/src/cli/gates_flamegraph_cmd.rs +++ b/tooling/profiler/src/cli/gates_flamegraph_cmd.rs @@ -173,6 +173,7 @@ mod tests { debug_symbols: ProgramDebugInfo { debug_infos: vec![DebugInfo::default()] }, file_map: BTreeMap::default(), names: vec!["main".to_string()], + brillig_names: Vec::new(), }; // Write the artifact to a file diff --git a/tooling/profiler/src/cli/opcodes_flamegraph_cmd.rs b/tooling/profiler/src/cli/opcodes_flamegraph_cmd.rs index f91e50d8716..d7f3cbb9b85 100644 --- a/tooling/profiler/src/cli/opcodes_flamegraph_cmd.rs +++ b/tooling/profiler/src/cli/opcodes_flamegraph_cmd.rs @@ -188,6 +188,7 @@ mod tests { debug_symbols: ProgramDebugInfo { debug_infos: vec![DebugInfo::default()] }, file_map: BTreeMap::default(), names: vec!["main".to_string()], + brillig_names: Vec::new(), }; // Write the artifact to a file @@ -228,6 +229,7 @@ mod tests { debug_symbols: ProgramDebugInfo { debug_infos: vec![DebugInfo::default()] }, file_map: BTreeMap::default(), names: vec!["main".to_string()], + brillig_names: vec!["main".to_string()], }; // Write the artifact to a file From 89db90a3e4334d69d9b1edb4f417b830c2ec5fdf Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Thu, 15 Aug 2024 16:39:14 +0000 Subject: [PATCH 8/9] update how we collect brillig names --- compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index f26896558c4..dd984f506a6 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -334,12 +334,14 @@ impl Ssa { acirs.push(generated_acir); } } - let names = vecmap(&shared_context.generated_brillig, |brillig| brillig.name.clone()); - let brillig_op = vecmap(shared_context.generated_brillig, |brillig| BrilligBytecode { - bytecode: brillig.byte_code, - }); - Ok((acirs, brillig_op, names, self.error_selector_to_type)) + let (brillig_bytecode, brillig_names) = shared_context + .generated_brillig + .into_iter() + .map(|brillig| (BrilligBytecode { bytecode: brillig.byte_code }, brillig.name)) + .unzip(); + + Ok((acirs, brillig_bytecode, brillig_names, self.error_selector_to_type)) } } From 78bca6b8fa33815affe2fec7e85253a880a738a6 Mon Sep 17 00:00:00 2001 From: Maxim Vezenov Date: Thu, 15 Aug 2024 12:42:46 -0400 Subject: [PATCH 9/9] Update compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs --- compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index dd984f506a6..9f11267f100 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -827,7 +827,6 @@ impl<'a> Context<'a> { } else { let code = self.gen_brillig_for(func, arguments.clone(), brillig)?; - let generated_pointer = self.shared_context.new_generated_pointer(); let output_values = self.acir_context.brillig_call(