[Mlir-commits] [mlir] 263476d - [mlir][acc] Fixes Issue HostDataOp verifier crash on block-argument data operands (#228226)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Oct 2 10:51:16 PDT 2026
Author: Naaz30
Date: 2026-10-02T17:51:07Z
New Revision: 263476d17dbda3bd90ff0343bc580a563b795c15
URL: https://github.com/llvm/llvm-project/commit/263476d17dbda3bd90ff0343bc580a563b795c15
DIFF: https://github.com/llvm/llvm-project/commit/263476d17dbda3bd90ff0343bc580a563b795c15.diff
LOG: [mlir][acc] Fixes Issue HostDataOp verifier crash on block-argument data operands (#228226)
Used dyn_cast_if_present in HostDataOp::verify so data operands with no
defining op (block arguments) emit "expect data entry operation as
defining op" instead of asserting in dyn_cast.
Fixes #226641
Added:
Modified:
mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
mlir/test/Dialect/OpenACC/invalid.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
index 0d9ef4abc4bd50..1cd35c7132ce2b 100644
--- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
+++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp
@@ -3433,7 +3433,7 @@ LogicalResult acc::HostDataOp::verify() {
llvm::SmallPtrSet<mlir::Value, 4> seenVars;
for (mlir::Value operand : getDataClauseOperands()) {
auto useDeviceOp =
- mlir::dyn_cast<acc::UseDeviceOp>(operand.getDefiningOp());
+ mlir::dyn_cast_if_present<acc::UseDeviceOp>(operand.getDefiningOp());
if (!useDeviceOp)
return emitError("expect data entry operation as defining op");
diff --git a/mlir/test/Dialect/OpenACC/invalid.mlir b/mlir/test/Dialect/OpenACC/invalid.mlir
index eeb8e75c5c0394..508e2da79f2a41 100644
--- a/mlir/test/Dialect/OpenACC/invalid.mlir
+++ b/mlir/test/Dialect/OpenACC/invalid.mlir
@@ -992,3 +992,13 @@ func.func @verify_parallel_async_missing_device_type(%arg0: i64) {
}) : (i64) -> ()
return
}
+
+// -----
+
+func.func @host_data_block_arg(%arg0: memref<?xf32>) {
+ // expected-error at +1 {{expect data entry operation as defining op}}
+ acc.host_data dataOperands(%arg0 : memref<?xf32>) {
+ acc.terminator
+ }
+ return
+}
More information about the Mlir-commits
mailing list