diff --git a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp index b82ad20d8e194..70cbde7071551 100644 --- a/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp +++ b/mlir/lib/Dialect/OpenACC/IR/OpenACC.cpp @@ -3144,7 +3144,8 @@ LogicalResult acc::DataOp::verify() { "must appear on the data operation"); for (mlir::Value operand : getDataClauseOperands()) - if (!mlir::isa(operand) || + !mlir::isa( operand.getDefiningOp())) diff --git a/mlir/test/Dialect/OpenACC/invalid.mlir b/mlir/test/Dialect/OpenACC/invalid.mlir index 24ce9784393b0..26b63fbe182ea 100644 --- a/mlir/test/Dialect/OpenACC/invalid.mlir +++ b/mlir/test/Dialect/OpenACC/invalid.mlir @@ -840,3 +840,11 @@ func.func @verify_declare_enter(%arg0 : memref) { acc.declare_exit token(%0) dataOperands(%arg0 : memref) return } + +func.func @verify_data(%arg0 : memref) { +// expected-error @below {{expect data entry/exit operation or acc.getdeviceptr as defining op}} + acc.data dataOperands(%arg0 : memref) { + acc.terminator + } + return +}