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