aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Optimizer/Dialect/FIROps.cpp
diff options
context:
space:
mode:
authorWang Pengcheng <wangpengcheng.pp@bytedance.com>2024-04-17 21:47:29 +0800
committerWang Pengcheng <wangpengcheng.pp@bytedance.com>2024-04-17 21:47:29 +0800
commit7d1b70a3960cdacfa4d7531531a9a921dadd3d88 (patch)
treeac207bdf9fcb3c3656deafb734acd8f03b40c8db /flang/lib/Optimizer/Dialect/FIROps.cpp
parentc9d96c0d77b67c208aaf7f8f2554f972baa412d2 (diff)
parente77f6742143d71161f3f1161270648c9b95b2137 (diff)
downloadllvm-users/wangpc-pp/spr/riscv-dont-use-v0-directly-in-patterns.zip
llvm-users/wangpc-pp/spr/riscv-dont-use-v0-directly-in-patterns.tar.gz
llvm-users/wangpc-pp/spr/riscv-dont-use-v0-directly-in-patterns.tar.bz2
Created using spr 1.3.6-beta.1
Diffstat (limited to 'flang/lib/Optimizer/Dialect/FIROps.cpp')
-rw-r--r--flang/lib/Optimizer/Dialect/FIROps.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp
index 8ab7410..be27256 100644
--- a/flang/lib/Optimizer/Dialect/FIROps.cpp
+++ b/flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -3993,6 +3993,38 @@ mlir::LogicalResult fir::CUDAKernelOp::verify() {
return mlir::success();
}
+mlir::LogicalResult fir::CUDAAllocateOp::verify() {
+ if (getPinned() && getStream())
+ return emitOpError("pinned and stream cannot appears at the same time");
+ if (!fir::unwrapRefType(getBox().getType()).isa<fir::BaseBoxType>())
+ return emitOpError(
+ "expect box to be a reference to/or a class or box type value");
+ if (getSource() &&
+ !fir::unwrapRefType(getSource().getType()).isa<fir::BaseBoxType>())
+ return emitOpError(
+ "expect source to be a reference to/or a class or box type value");
+ if (getErrmsg() &&
+ !fir::unwrapRefType(getErrmsg().getType()).isa<fir::BoxType>())
+ return emitOpError(
+ "expect errmsg to be a reference to/or a box type value");
+ if (getErrmsg() && !getHasStat())
+ return emitOpError("expect stat attribute when errmsg is provided");
+ return mlir::success();
+}
+
+mlir::LogicalResult fir::CUDADeallocateOp::verify() {
+ if (!fir::unwrapRefType(getBox().getType()).isa<fir::BaseBoxType>())
+ return emitOpError(
+ "expect box to be a reference to class or box type value");
+ if (getErrmsg() &&
+ !fir::unwrapRefType(getErrmsg().getType()).isa<fir::BoxType>())
+ return emitOpError(
+ "expect errmsg to be a reference to/or a box type value");
+ if (getErrmsg() && !getHasStat())
+ return emitOpError("expect stat attribute when errmsg is provided");
+ return mlir::success();
+}
+
//===----------------------------------------------------------------------===//
// FIROpsDialect
//===----------------------------------------------------------------------===//