[Mlir-commits] [mlir] [mlir][sparse] Do not access operation after it was replaced (PR #146546)

Matthias Springer llvmlistbot at llvm.org
Tue Jul 1 08:24:43 PDT 2025


https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/146546

Accessing an erased operation will no longer work during a One-Shot Dialect Conversion.

>From 3bb536afec4a0d492c0aad9181768d1f04260e78 Mon Sep 17 00:00:00 2001
From: Matthias Springer <me at m-sp.org>
Date: Tue, 1 Jul 2025 15:23:34 +0000
Subject: [PATCH] [mlir][sparse] Do not access operation after it was replaced

Accessing an erased operation will no longer work during a One-Shot Dialect Conversion.
---
 .../Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp
index 7f0b657687442..65adc37808fe4 100644
--- a/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp
+++ b/mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorConversion.cpp
@@ -729,9 +729,9 @@ class SparseTensorCompressConverter : public OpConversionPattern<CompressOp> {
     createFuncCall(rewriter, loc, name, {},
                    {tensor, lvlCoords, values, filled, added, count},
                    EmitCInterface::On);
+    Operation *parent = getTop(op);
     rewriter.replaceOp(op, adaptor.getTensor());
     // Deallocate the buffers on exit of the loop nest.
-    Operation *parent = getTop(op);
     rewriter.setInsertionPointAfter(parent);
     rewriter.create<memref::DeallocOp>(loc, values);
     rewriter.create<memref::DeallocOp>(loc, filled);



More information about the Mlir-commits mailing list