forked from OSchip/llvm-project
[mlir] Remove the deprecated ODS Op verifier/parser/printer code blocks
These have been deprecated for ~1 month now and can be removed. Differential Revision: https://reviews.llvm.org/D121090
This commit is contained in:
parent
092a530ca1
commit
bbfec2a1b0
|
@ -417,11 +417,9 @@ def fir_UndefOp : fir_OneResultOp<"undefined", [NoSideEffect]> {
|
|||
let results = (outs AnyType:$intype);
|
||||
|
||||
let assemblyFormat = "type($intype) attr-dict";
|
||||
|
||||
let verifier = [{
|
||||
// allow `undef : ref<T>` since it is a possible from transformations
|
||||
return mlir::success();
|
||||
}];
|
||||
|
||||
// Note: we allow `undef : ref<T>` since it is a possible from transformations.
|
||||
let hasVerifier = 0;
|
||||
}
|
||||
|
||||
def fir_ZeroOp : fir_OneResultOp<"zero_bits", [NoSideEffect]> {
|
||||
|
|
|
@ -901,7 +901,7 @@ def GPU_AllocOp : GPU_Op<"alloc", [
|
|||
`(` $dynamicSizes `)` (`` `[` $symbolOperands^ `]`)? attr-dict `:` type($memref)
|
||||
}];
|
||||
|
||||
let verifier = [{ return ::verify(*this); }];
|
||||
let hasVerifier = 1;
|
||||
let hasCanonicalizer = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -2446,12 +2446,6 @@ class Op<Dialect dialect, string mnemonic, list<Trait> props = []> {
|
|||
// provided.
|
||||
bit skipDefaultBuilders = 0;
|
||||
|
||||
// Custom parser and printer.
|
||||
// NOTE: These fields are deprecated in favor of `assemblyFormat` or
|
||||
// `hasCustomAssemblyFormat`, and are slated for deletion.
|
||||
code parser = ?;
|
||||
code printer = ?;
|
||||
|
||||
// Custom assembly format.
|
||||
/// This field corresponds to a declarative description of the assembly format
|
||||
/// for this operation. If populated, the `hasCustomAssemblyFormat` field is
|
||||
|
@ -2483,12 +2477,6 @@ class Op<Dialect dialect, string mnemonic, list<Trait> props = []> {
|
|||
// region ops are verified.
|
||||
bit hasRegionVerifier = 0;
|
||||
|
||||
// A custom code block corresponding to the extra verification code of the
|
||||
// operation.
|
||||
// NOTE: This field is deprecated in favor of `hasVerifier` and is slated for
|
||||
// deletion.
|
||||
code verifier = ?;
|
||||
|
||||
// Whether this op has associated canonicalization patterns.
|
||||
bit hasCanonicalizer = 0;
|
||||
|
||||
|
|
|
@ -1174,20 +1174,21 @@ LogicalResult MemsetOp::fold(ArrayRef<Attribute> operands,
|
|||
// GPU_AllocOp
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
static LogicalResult verify(AllocOp op) {
|
||||
auto memRefType = op.memref().getType().cast<MemRefType>();
|
||||
LogicalResult AllocOp::verify() {
|
||||
auto memRefType = memref().getType().cast<MemRefType>();
|
||||
|
||||
if (static_cast<int64_t>(op.dynamicSizes().size()) !=
|
||||
if (static_cast<int64_t>(dynamicSizes().size()) !=
|
||||
memRefType.getNumDynamicDims())
|
||||
return op.emitOpError("dimension operand count does not equal memref "
|
||||
"dynamic dimension count");
|
||||
return emitOpError("dimension operand count does not equal memref "
|
||||
"dynamic dimension count");
|
||||
|
||||
unsigned numSymbols = 0;
|
||||
if (!memRefType.getLayout().isIdentity())
|
||||
numSymbols = memRefType.getLayout().getAffineMap().getNumSymbols();
|
||||
if (op.symbolOperands().size() != numSymbols)
|
||||
return op.emitOpError("symbol operand count does not equal memref symbol "
|
||||
"count");
|
||||
if (symbolOperands().size() != numSymbols) {
|
||||
return emitOpError(
|
||||
"symbol operand count does not equal memref symbol count");
|
||||
}
|
||||
|
||||
return success();
|
||||
}
|
||||
|
|
|
@ -2136,60 +2136,28 @@ void OpEmitter::genParser() {
|
|||
if (hasStringAttribute(def, "assemblyFormat"))
|
||||
return;
|
||||
|
||||
bool hasCppFormat = def.getValueAsBit("hasCustomAssemblyFormat");
|
||||
if (!hasStringAttribute(def, "parser") && !hasCppFormat)
|
||||
if (!def.getValueAsBit("hasCustomAssemblyFormat"))
|
||||
return;
|
||||
|
||||
SmallVector<MethodParameter> paramList;
|
||||
paramList.emplace_back("::mlir::OpAsmParser &", "parser");
|
||||
paramList.emplace_back("::mlir::OperationState &", "result");
|
||||
|
||||
// If this uses the cpp format, only generate a declaration.
|
||||
if (hasCppFormat) {
|
||||
auto *method = opClass.declareStaticMethod("::mlir::ParseResult", "parse",
|
||||
std::move(paramList));
|
||||
ERROR_IF_PRUNED(method, "parse", op);
|
||||
return;
|
||||
}
|
||||
|
||||
PrintNote(op.getLoc(),
|
||||
"`parser` and `printer` fields are deprecated and will be removed, "
|
||||
"please use the `hasCustomAssemblyFormat` field instead");
|
||||
|
||||
auto *method = opClass.addStaticMethod("::mlir::ParseResult", "parse",
|
||||
std::move(paramList));
|
||||
auto *method = opClass.declareStaticMethod("::mlir::ParseResult", "parse",
|
||||
std::move(paramList));
|
||||
ERROR_IF_PRUNED(method, "parse", op);
|
||||
|
||||
FmtContext fctx;
|
||||
fctx.addSubst("cppClass", opClass.getClassName());
|
||||
auto parser = def.getValueAsString("parser").ltrim().rtrim(" \t\v\f\r");
|
||||
method->body() << " " << tgfmt(parser, &fctx);
|
||||
}
|
||||
|
||||
void OpEmitter::genPrinter() {
|
||||
if (hasStringAttribute(def, "assemblyFormat"))
|
||||
return;
|
||||
|
||||
// If this uses the cpp format, only generate a declaration.
|
||||
if (def.getValueAsBit("hasCustomAssemblyFormat")) {
|
||||
auto *method = opClass.declareMethod(
|
||||
"void", "print", MethodParameter("::mlir::OpAsmPrinter &", "p"));
|
||||
ERROR_IF_PRUNED(method, "print", op);
|
||||
// Check to see if this op uses a c++ format.
|
||||
if (!def.getValueAsBit("hasCustomAssemblyFormat"))
|
||||
return;
|
||||
}
|
||||
|
||||
auto *valueInit = def.getValueInit("printer");
|
||||
StringInit *stringInit = dyn_cast<StringInit>(valueInit);
|
||||
if (!stringInit)
|
||||
return;
|
||||
|
||||
auto *method = opClass.addMethod(
|
||||
auto *method = opClass.declareMethod(
|
||||
"void", "print", MethodParameter("::mlir::OpAsmPrinter &", "p"));
|
||||
ERROR_IF_PRUNED(method, "print", op);
|
||||
FmtContext fctx;
|
||||
fctx.addSubst("cppClass", opClass.getClassName());
|
||||
auto printer = stringInit->getValue().ltrim().rtrim(" \t\v\f\r");
|
||||
method->body() << " " << tgfmt(printer, &fctx);
|
||||
}
|
||||
|
||||
/// Generate verification on native traits requiring attributes.
|
||||
|
@ -2272,14 +2240,10 @@ void OpEmitter::genVerifier() {
|
|||
// This may not act as their expectation because this doesn't call any
|
||||
// verifiers of native/interface traits. Needs to review those use cases and
|
||||
// see if we should use the mlir::verify() instead.
|
||||
auto *valueInit = def.getValueInit("verifier");
|
||||
StringInit *stringInit = dyn_cast<StringInit>(valueInit);
|
||||
bool hasCustomVerifyCodeBlock = stringInit && !stringInit->getValue().empty();
|
||||
|
||||
auto *method = opClass.addMethod("::mlir::LogicalResult", "verifyInvariants");
|
||||
ERROR_IF_PRUNED(method, "verifyInvariants", op);
|
||||
auto &body = method->body();
|
||||
if (hasCustomVerifyCodeBlock || def.getValueAsBit("hasVerifier")) {
|
||||
if (def.getValueAsBit("hasVerifier")) {
|
||||
body << " if(::mlir::succeeded(verifyInvariantsImpl()) && "
|
||||
"::mlir::succeeded(verify()))\n";
|
||||
body << " return ::mlir::success();\n";
|
||||
|
@ -2290,22 +2254,9 @@ void OpEmitter::genVerifier() {
|
|||
}
|
||||
|
||||
void OpEmitter::genCustomVerifier() {
|
||||
auto *valueInit = def.getValueInit("verifier");
|
||||
StringInit *stringInit = dyn_cast<StringInit>(valueInit);
|
||||
bool hasCustomVerifyCodeBlock = stringInit && !stringInit->getValue().empty();
|
||||
|
||||
if (def.getValueAsBit("hasVerifier")) {
|
||||
auto *method = opClass.declareMethod("::mlir::LogicalResult", "verify");
|
||||
ERROR_IF_PRUNED(method, "verify", op);
|
||||
} else if (hasCustomVerifyCodeBlock) {
|
||||
auto *method = opClass.addMethod("::mlir::LogicalResult", "verify");
|
||||
ERROR_IF_PRUNED(method, "verify", op);
|
||||
auto &body = method->body();
|
||||
|
||||
FmtContext fctx;
|
||||
fctx.addSubst("cppClass", opClass.getClassName());
|
||||
auto printer = stringInit->getValue().ltrim().rtrim(" \t\v\f\r");
|
||||
body << " " << tgfmt(printer, &fctx);
|
||||
}
|
||||
|
||||
if (def.getValueAsBit("hasRegionVerifier")) {
|
||||
|
|
Loading…
Reference in New Issue