[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