[Mlir-commits] [mlir] [mlir] fix assertion failure in remove-dead-values (PR #144849)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Fri Jun 20 07:25:32 PDT 2025


https://github.com/Menooker updated https://github.com/llvm/llvm-project/pull/144849

>From 8d2e6295d8cc1b9685aafaa60cc6ae4e734d24be Mon Sep 17 00:00:00 2001
From: Menooker <myjisgreat at live.cn>
Date: Wed, 18 Jun 2025 23:58:13 -0700
Subject: [PATCH 1/4] [mlir] fix assertion failure in remove-dead-values

---
 mlir/lib/Transforms/RemoveDeadValues.cpp     |  3 ++-
 mlir/test/Transforms/remove-dead-values.mlir | 22 ++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/mlir/lib/Transforms/RemoveDeadValues.cpp b/mlir/lib/Transforms/RemoveDeadValues.cpp
index 08dfea8eb2648..113d91ab3dc78 100644
--- a/mlir/lib/Transforms/RemoveDeadValues.cpp
+++ b/mlir/lib/Transforms/RemoveDeadValues.cpp
@@ -705,7 +705,8 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) {
 
   // 4. Operands
   for (auto &o : list.operands) {
-    o.op->eraseOperands(o.nonLive);
+    if (o.nonLive.size() > 0)
+      o.op->eraseOperands(o.nonLive);
   }
 
   // 5. Results
diff --git a/mlir/test/Transforms/remove-dead-values.mlir b/mlir/test/Transforms/remove-dead-values.mlir
index 8c2a1cf7546f3..456fe5d6e6607 100644
--- a/mlir/test/Transforms/remove-dead-values.mlir
+++ b/mlir/test/Transforms/remove-dead-values.mlir
@@ -510,3 +510,25 @@ module {
 // CHECK: %[[yield:.*]] = arith.addf %{{.*}}, %{{.*}} : f32
 // CHECK: linalg.yield %[[yield]] : f32
 // CHECK-NOT: arith.subf
+
+
+// -----
+
+// check that ops with zero operands are correctly handled
+
+module {
+  func.func @test_zero_operands(%I: memref<10xindex>, %I2: memref<10xf32>) {
+    %v0 = arith.constant 0 : index
+    %result = memref.alloca_scope -> index {
+      %c = arith.addi %v0, %v0 : index
+      memref.store %c, %I[%v0] : memref<10xindex>
+      memref.alloca_scope.return %c: index
+    }
+    func.return
+  }
+}
+
+// CHECK-LABEL: func @test_zero_operands
+// CHECK: memref.alloca_scope
+// CHECK: memref.store
+// CHECK-NOT: memref.alloca_scope.return
\ No newline at end of file

>From 057406238af95110d26fac95475d518a6d16c52f Mon Sep 17 00:00:00 2001
From: Menooker <myjisgreat at live.cn>
Date: Fri, 20 Jun 2025 14:37:18 +0900
Subject: [PATCH 2/4] Update mlir/lib/Transforms/RemoveDeadValues.cpp
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Andrzej WarzyƄski <andrzej.warzynski at gmail.com>
---
 mlir/lib/Transforms/RemoveDeadValues.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mlir/lib/Transforms/RemoveDeadValues.cpp b/mlir/lib/Transforms/RemoveDeadValues.cpp
index 113d91ab3dc78..154b02fd9560d 100644
--- a/mlir/lib/Transforms/RemoveDeadValues.cpp
+++ b/mlir/lib/Transforms/RemoveDeadValues.cpp
@@ -705,7 +705,7 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) {
 
   // 4. Operands
   for (auto &o : list.operands) {
-    if (o.nonLive.size() > 0)
+    if (o.op->getNumOperands() > 0)
       o.op->eraseOperands(o.nonLive);
   }
 

>From eaff522ac02c1e4dc01375c1d10276fc1de1bdcb Mon Sep 17 00:00:00 2001
From: Menooker <myjisgreat at live.cn>
Date: Fri, 20 Jun 2025 14:38:29 +0900
Subject: [PATCH 3/4] Update remove-dead-values.mlir

---
 mlir/test/Transforms/remove-dead-values.mlir | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mlir/test/Transforms/remove-dead-values.mlir b/mlir/test/Transforms/remove-dead-values.mlir
index 456fe5d6e6607..a31e3d358f2a6 100644
--- a/mlir/test/Transforms/remove-dead-values.mlir
+++ b/mlir/test/Transforms/remove-dead-values.mlir
@@ -531,4 +531,4 @@ module {
 // CHECK-LABEL: func @test_zero_operands
 // CHECK: memref.alloca_scope
 // CHECK: memref.store
-// CHECK-NOT: memref.alloca_scope.return
\ No newline at end of file
+// CHECK-NOT: memref.alloca_scope.return

>From f56f1e1f2babf587c75a861bcab4101f27318412 Mon Sep 17 00:00:00 2001
From: Menooker <myjisgreat at live.cn>
Date: Fri, 20 Jun 2025 23:19:40 +0900
Subject: [PATCH 4/4] Update mlir/lib/Transforms/RemoveDeadValues.cpp

Co-authored-by: Mehdi Amini <joker.eph at gmail.com>
---
 mlir/lib/Transforms/RemoveDeadValues.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mlir/lib/Transforms/RemoveDeadValues.cpp b/mlir/lib/Transforms/RemoveDeadValues.cpp
index 154b02fd9560d..f269eaa15111a 100644
--- a/mlir/lib/Transforms/RemoveDeadValues.cpp
+++ b/mlir/lib/Transforms/RemoveDeadValues.cpp
@@ -704,7 +704,7 @@ static void cleanUpDeadVals(RDVFinalCleanupList &list) {
   }
 
   // 4. Operands
-  for (auto &o : list.operands) {
+  for (OperationToCleanup &o : list.operands) {
     if (o.op->getNumOperands() > 0)
       o.op->eraseOperands(o.nonLive);
   }



More information about the Mlir-commits mailing list