diff --git a/hercules_ir/src/dc_normalization.rs b/hercules_ir/src/dc_normalization.rs index 06c45fea4df90d4691ad24a209504d02e5fb190d..e9f8f23aa7c05d47601c4a88087775ad82257ec0 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()))