From 6d7f0a764816e01656f24f0efd42da06ecd15788 Mon Sep 17 00:00:00 2001 From: Aaron Councilman <aaronjc4@illinois.edu> Date: Thu, 30 Jan 2025 21:49:01 -0600 Subject: [PATCH] Normalize min of zero --- hercules_ir/src/dc_normalization.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/hercules_ir/src/dc_normalization.rs b/hercules_ir/src/dc_normalization.rs index 06c45fea..e9f8f23a 100644 --- a/hercules_ir/src/dc_normalization.rs +++ b/hercules_ir/src/dc_normalization.rs @@ -95,15 +95,16 @@ pub trait DynamicConstantView { } if let Some(const_val) = constant_val { - fields.insert(self.add_dynconst(DynamicConstant::Constant(const_val))); + // Since dynamic constants are non-negative, ignore the constant if it is 0 + if const_val != 0 { + fields.insert(self.add_dynconst(DynamicConstant::Constant(const_val))); + } } - assert!( - fields.len() > 0, - "Min of 0 dynamic constant expressions is undefined" - ); - - if fields.len() <= 1 { + if fields.len() == 0 { + // The minimum of 0 dynamic constants is 0 since dynamic constants are non-negative + self.add_dynconst(DynamicConstant::Constant(0)) + } else if fields.len() <= 1 { *fields.first().unwrap() } else { self.add_dynconst(DynamicConstant::Min(fields.into_iter().collect())) -- GitLab