From 661a6a18e26375bf5f4f10ca2693212840181bd7 Mon Sep 17 00:00:00 2001 From: Ary Borenszweig Date: Thu, 5 Sep 2024 09:15:18 -0300 Subject: [PATCH 1/4] fix: use element_size() instead of computing it with division --- compiler/noirc_evaluator/src/ssa/opt/die.rs | 5 ++--- .../empty_composite_array_get/Nargo.toml | 7 +++++++ .../empty_composite_array_get/src/main.nr | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml create mode 100644 test_programs/compile_success_empty/empty_composite_array_get/src/main.nr diff --git a/compiler/noirc_evaluator/src/ssa/opt/die.rs b/compiler/noirc_evaluator/src/ssa/opt/die.rs index b9804062118..095413d7b9a 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/die.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/die.rs @@ -377,13 +377,12 @@ fn handle_array_get_group( next_out_of_bounds_index: &mut Option, possible_index_out_of_bounds_indexes: &mut Vec, ) { - let Some(array_length) = function.dfg.try_get_array_length(*array) else { + if function.dfg.try_get_array_length(*array).is_none() { // Nothing to do for slices return; }; - let flattened_size = function.dfg.type_of_value(*array).flattened_size(); - let element_size = flattened_size / array_length; + let element_size = function.dfg.type_of_value(*array).element_size(); if element_size <= 1 { // Not a composite type return; diff --git a/test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml b/test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml new file mode 100644 index 00000000000..fa4614c8351 --- /dev/null +++ b/test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml @@ -0,0 +1,7 @@ +[package] +name = "empty_composite_array_get" +type = "bin" +authors = [""] +compiler_version = ">=0.32.0" + +[dependencies] \ No newline at end of file diff --git a/test_programs/compile_success_empty/empty_composite_array_get/src/main.nr b/test_programs/compile_success_empty/empty_composite_array_get/src/main.nr new file mode 100644 index 00000000000..595a123cf37 --- /dev/null +++ b/test_programs/compile_success_empty/empty_composite_array_get/src/main.nr @@ -0,0 +1,4 @@ +fn main() { + let empty_array: [(Field, Field); 0] = []; + let _ = empty_array[0]; +} From f39d758aaa757ea6d153baa2814e0065e0735563 Mon Sep 17 00:00:00 2001 From: Ary Borenszweig Date: Thu, 5 Sep 2024 10:26:45 -0300 Subject: [PATCH 2/4] Move test program --- .../empty_composite_array_get/Nargo.toml | 0 .../empty_composite_array_get/src/main.nr | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename test_programs/{compile_success_empty => execution_failure}/empty_composite_array_get/Nargo.toml (100%) rename test_programs/{compile_success_empty => execution_failure}/empty_composite_array_get/src/main.nr (100%) diff --git a/test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml b/test_programs/execution_failure/empty_composite_array_get/Nargo.toml similarity index 100% rename from test_programs/compile_success_empty/empty_composite_array_get/Nargo.toml rename to test_programs/execution_failure/empty_composite_array_get/Nargo.toml diff --git a/test_programs/compile_success_empty/empty_composite_array_get/src/main.nr b/test_programs/execution_failure/empty_composite_array_get/src/main.nr similarity index 100% rename from test_programs/compile_success_empty/empty_composite_array_get/src/main.nr rename to test_programs/execution_failure/empty_composite_array_get/src/main.nr From 1ce1553cd1ce7a7707cb4e595be76a807ca84a69 Mon Sep 17 00:00:00 2001 From: Ary Borenszweig Date: Thu, 5 Sep 2024 10:59:49 -0300 Subject: [PATCH 3/4] Add an empty input argument --- .../execution_failure/empty_composite_array_get/Prover.toml | 1 + .../execution_failure/empty_composite_array_get/src/main.nr | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 test_programs/execution_failure/empty_composite_array_get/Prover.toml diff --git a/test_programs/execution_failure/empty_composite_array_get/Prover.toml b/test_programs/execution_failure/empty_composite_array_get/Prover.toml new file mode 100644 index 00000000000..ff52a8c5bce --- /dev/null +++ b/test_programs/execution_failure/empty_composite_array_get/Prover.toml @@ -0,0 +1 @@ +empty_input = [] \ No newline at end of file diff --git a/test_programs/execution_failure/empty_composite_array_get/src/main.nr b/test_programs/execution_failure/empty_composite_array_get/src/main.nr index 595a123cf37..ec3e2a17d97 100644 --- a/test_programs/execution_failure/empty_composite_array_get/src/main.nr +++ b/test_programs/execution_failure/empty_composite_array_get/src/main.nr @@ -1,4 +1,6 @@ -fn main() { +fn main(empty_input: [(Field, Field); 0]) { let empty_array: [(Field, Field); 0] = []; let _ = empty_array[0]; + + let _ = empty_input[0]; } From 28e564b03163ba18d1fd98ce33552bd2e673461c Mon Sep 17 00:00:00 2001 From: jfecher Date: Thu, 5 Sep 2024 09:04:37 -0500 Subject: [PATCH 4/4] Update test_programs/execution_failure/empty_composite_array_get/src/main.nr --- .../execution_failure/empty_composite_array_get/src/main.nr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test_programs/execution_failure/empty_composite_array_get/src/main.nr b/test_programs/execution_failure/empty_composite_array_get/src/main.nr index ec3e2a17d97..1ed9fe4a5e0 100644 --- a/test_programs/execution_failure/empty_composite_array_get/src/main.nr +++ b/test_programs/execution_failure/empty_composite_array_get/src/main.nr @@ -1,6 +1,5 @@ fn main(empty_input: [(Field, Field); 0]) { let empty_array: [(Field, Field); 0] = []; - let _ = empty_array[0]; - let _ = empty_input[0]; + let _ = empty_array[0]; }