[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