From bb60d12049c6fb4bcd57372f3e5b651fe8410888 Mon Sep 17 00:00:00 2001 From: Jake Fecher Date: Wed, 28 Aug 2024 15:41:12 -0500 Subject: [PATCH 1/2] Add check to value merger --- .../src/ssa/opt/flatten_cfg/value_merger.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs b/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs index 7c2db62b0ea..75ee57dd4fa 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/flatten_cfg/value_merger.rs @@ -58,6 +58,13 @@ impl<'a> ValueMerger<'a> { then_value: ValueId, else_value: ValueId, ) -> ValueId { + let then_value = self.dfg.resolve(then_value); + let else_value = self.dfg.resolve(else_value); + + if then_value == else_value { + return then_value; + } + match self.dfg.type_of_value(then_value) { Type::Numeric(_) => Self::merge_numeric_values( self.dfg, From 951f55a15278c8613e37954bfd3515f2b65b7610 Mon Sep 17 00:00:00 2001 From: Jake Fecher Date: Wed, 28 Aug 2024 15:45:29 -0500 Subject: [PATCH 2/2] Add simplify in IfElse instruction --- compiler/noirc_evaluator/src/ssa/ir/instruction.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/noirc_evaluator/src/ssa/ir/instruction.rs b/compiler/noirc_evaluator/src/ssa/ir/instruction.rs index c3cd27bf179..36069f17933 100644 --- a/compiler/noirc_evaluator/src/ssa/ir/instruction.rs +++ b/compiler/noirc_evaluator/src/ssa/ir/instruction.rs @@ -733,11 +733,15 @@ impl Instruction { } } + let then_value = dfg.resolve(*then_value); + let else_value = dfg.resolve(*else_value); + if then_value == else_value { + return SimplifiedTo(then_value); + } + if matches!(&typ, Type::Numeric(_)) { let then_condition = *then_condition; - let then_value = *then_value; let else_condition = *else_condition; - let else_value = *else_value; let result = ValueMerger::merge_numeric_values( dfg,