[Mlir-commits] [mlir] [mlir][ods] Fix generation of optional custom parsers (PR #84821)
Jeff Niu
llvmlistbot at llvm.org
Mon Mar 11 13:07:17 PDT 2024
https://github.com/Mogball created https://github.com/llvm/llvm-project/pull/84821
We need to generate `.has_value` for `OptionalParseResult`, also ensure that `auto result` doesn't conflict with `result` which is the variable name for `OperationState`.
>From 1bd229e7e13e409495d42643c99f9c5b042b3454 Mon Sep 17 00:00:00 2001
From: Mogball <jeff at modular.com>
Date: Mon, 11 Mar 2024 13:05:32 -0700
Subject: [PATCH] [mlir][ods] Fix generation of optional custom parsers
We need to generate `.has_value` for `OptionalParseResult`, also ensure
that `auto result` doesn't conflict with `result` which is the variable
name for `OperationState`.
---
mlir/test/mlir-tblgen/attr-or-type-format.td | 2 +-
mlir/test/mlir-tblgen/op-format.td | 8 ++++----
mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp | 2 +-
mlir/tools/mlir-tblgen/OpFormatGen.cpp | 8 ++++----
4 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/mlir/test/mlir-tblgen/attr-or-type-format.td b/mlir/test/mlir-tblgen/attr-or-type-format.td
index b9041e45f856ad..2884c4ed6a9081 100644
--- a/mlir/test/mlir-tblgen/attr-or-type-format.td
+++ b/mlir/test/mlir-tblgen/attr-or-type-format.td
@@ -648,7 +648,7 @@ def TypeN : TestType<"TestP"> {
// TYPE-LABEL: TestQType::parse
// TYPE: if (auto result = [&]() -> ::mlir::OptionalParseResult {
// TYPE: auto odsCustomResult = parseAB(odsParser
-// TYPE: if (!odsCustomResult) return {};
+// TYPE: if (!odsCustomResult.has_value()) return {};
// TYPE: if (::mlir::failed(*odsCustomResult)) return ::mlir::failure();
// TYPE: return ::mlir::success();
// TYPE: }(); result.has_value() && ::mlir::failed(*result)) {
diff --git a/mlir/test/mlir-tblgen/op-format.td b/mlir/test/mlir-tblgen/op-format.td
index 3250589605f348..4a19ffb3dfcc68 100644
--- a/mlir/test/mlir-tblgen/op-format.td
+++ b/mlir/test/mlir-tblgen/op-format.td
@@ -93,14 +93,14 @@ def OptionalGroupC : TestFormat_Op<[{
}]>, Arguments<(ins DefaultValuedStrAttr<StrAttr, "default">:$a)>;
// CHECK-LABEL: OptionalGroupD::parse
-// CHECK: if (auto result = [&]() -> ::mlir::OptionalParseResult {
+// CHECK: if (auto optResult = [&]() -> ::mlir::OptionalParseResult {
// CHECK: auto odsResult = parseCustom(parser, aOperand, bOperand);
-// CHECK: if (!odsResult) return {};
+// CHECK: if (!odsResult.has_value()) return {};
// CHECK: if (::mlir::failed(*odsResult)) return ::mlir::failure();
// CHECK: return ::mlir::success();
-// CHECK: }(); result.has_value() && ::mlir::failed(*result)) {
+// CHECK: }(); optResult.has_value() && ::mlir::failed(*optResult)) {
// CHECK: return ::mlir::failure();
-// CHECK: } else if (result.has_value()) {
+// CHECK: } else if (optResult.has_value()) {
// CHECK-LABEL: OptionalGroupD::print
// CHECK-NEXT: if (((getA()) || (getB()))) {
diff --git a/mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp b/mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp
index f8e0c83da3c8a6..6098808c646f76 100644
--- a/mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp
+++ b/mlir/tools/mlir-tblgen/AttrOrTypeFormatGen.cpp
@@ -622,7 +622,7 @@ void DefFormat::genCustomParser(CustomDirective *el, FmtContext &ctx,
}
os.unindent() << ");\n";
if (isOptional) {
- os << "if (!odsCustomResult) return {};\n";
+ os << "if (!odsCustomResult.has_value()) return {};\n";
os << "if (::mlir::failed(*odsCustomResult)) return ::mlir::failure();\n";
} else {
os << "if (::mlir::failed(odsCustomResult)) return {};\n";
diff --git a/mlir/tools/mlir-tblgen/OpFormatGen.cpp b/mlir/tools/mlir-tblgen/OpFormatGen.cpp
index eb8c0aba1d33b6..1ffac059f19815 100644
--- a/mlir/tools/mlir-tblgen/OpFormatGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpFormatGen.cpp
@@ -1025,7 +1025,7 @@ static void genCustomDirectiveParser(CustomDirective *dir, MethodBody &body,
body << ");\n";
if (isOptional) {
- body << " if (!odsResult) return {};\n"
+ body << " if (!odsResult.has_value()) return {};\n"
<< " if (::mlir::failed(*odsResult)) return ::mlir::failure();\n";
} else {
body << " if (odsResult) return ::mlir::failure();\n";
@@ -1285,13 +1285,13 @@ void OperationFormat::genElementParser(FormatElement *element, MethodBody &body,
region->name);
}
} else if (auto *custom = dyn_cast<CustomDirective>(firstElement)) {
- body << " if (auto result = [&]() -> ::mlir::OptionalParseResult {\n";
+ body << " if (auto optResult = [&]() -> ::mlir::OptionalParseResult {\n";
genCustomDirectiveParser(custom, body, useProperties, opCppClassName,
/*isOptional=*/true);
body << " return ::mlir::success();\n"
- << " }(); result.has_value() && ::mlir::failed(*result)) {\n"
+ << " }(); optResult.has_value() && ::mlir::failed(*optResult)) {\n"
<< " return ::mlir::failure();\n"
- << " } else if (result.has_value()) {\n";
+ << " } else if (optResult.has_value()) {\n";
}
genElementParsers(firstElement, thenElements.drop_front(),
More information about the Mlir-commits
mailing list