[Mlir-commits] [mlir] 0030fc4 - [mlir]Fix dialect conversion drop uses (#86991)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Mar 29 15:04:44 PDT 2024
Author: Rob Suderman
Date: 2024-03-29T15:04:40-07:00
New Revision: 0030fc4ac74a9ce645adb9d59e108da4d4d11818
URL: https://github.com/llvm/llvm-project/commit/0030fc4ac74a9ce645adb9d59e108da4d4d11818
DIFF: https://github.com/llvm/llvm-project/commit/0030fc4ac74a9ce645adb9d59e108da4d4d11818.diff
LOG: [mlir]Fix dialect conversion drop uses (#86991)
Before deleting the block we need to drop uses to the surrounding args.
If this is not performed dialect conversion failures can result in a
failure to remove args (despite the block having no remaining uses).
Added:
Modified:
mlir/lib/Transforms/Utils/DialectConversion.cpp
mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-invalid.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp
index 2ec0b964b304f6..3c72c8789e8ec5 100644
--- a/mlir/lib/Transforms/Utils/DialectConversion.cpp
+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp
@@ -279,11 +279,13 @@ class CreateBlockRewrite : public BlockRewrite {
auto &blockOps = block->getOperations();
while (!blockOps.empty())
blockOps.remove(blockOps.begin());
- block->dropAllUses();
- if (block->getParent())
+ block->dropAllDefinedValueUses();
+ if (block->getParent()) {
block->erase();
- else
+ } else {
+ block->dropAllDefinedValueUses();
delete block;
+ }
}
};
diff --git a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-invalid.mlir b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-invalid.mlir
index 17eec593691860..6494e1b2719487 100644
--- a/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-invalid.mlir
+++ b/mlir/test/Conversion/TosaToLinalg/tosa-to-linalg-invalid.mlir
@@ -15,3 +15,16 @@ func.func @tensor_with_unknown_rank(%arg0: tensor<*xi8>) -> tensor<*xi8> {
%0 = "tosa.abs"(%arg0) : (tensor<*xi8>) -> tensor<*xi8>
return %0 : tensor<*xi8>
}
+
+// -----
+
+// CHECK-LABEL: @unranked_add
+func.func @unranked_add(%arg0 : tensor<10x10xf32> , %arg1 : tensor<10x10xf32>, %arg2 : tensor<*xf32>) -> (tensor<10x10xf32>) {
+ // expected-error at +3 {{failed to legalize operation 'tosa.add'}}
+ %reduce = tosa.reduce_max %arg0 {axis = 1 : i32} : (tensor<10x10xf32>) -> tensor<10x1xf32>
+ %1 = tosa.add %reduce, %arg1 : (tensor<10x1xf32>, tensor<10x10xf32>) -> tensor<10x10xf32>
+ %0 = tosa.add %1, %arg2 : (tensor<10x10xf32>, tensor<*xf32>) -> tensor<*xf32>
+ %2 = tosa.reshape %0 {new_shape = array<i64: 10, 10>} : (tensor<*xf32>) -> tensor<10x10xf32>
+ return %2 : tensor<10x10xf32>
+}
+
More information about the Mlir-commits
mailing list