From 9c4dd53917cc65954f49b13759fbac635766d1ae Mon Sep 17 00:00:00 2001 From: sirasistant Date: Fri, 12 Jan 2024 13:13:41 +0000 Subject: [PATCH] feat: optimize array ops for arrays of structs --- compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs index 03fb4db73c5..e65e71b045d 100644 --- a/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs +++ b/compiler/noirc_evaluator/src/ssa/acir_gen/mod.rs @@ -2431,8 +2431,7 @@ impl Context { } } -// We can omit the element size array for arrays which have elements of size 1 and do not contain slices. -// TODO: remove restriction on size 1 elements. +// We can omit the element size array for arrays which don't contain arrays or slices. fn can_omit_element_sizes_array(array_typ: &Type) -> bool { if array_typ.contains_slice_element() { return false; @@ -2441,5 +2440,5 @@ fn can_omit_element_sizes_array(array_typ: &Type) -> bool { panic!("ICE: expected array type"); }; - types.len() == 1 && types[0].flattened_size() == 1 + !types.iter().any(|typ| typ.contains_an_array()) }