[PATCH] D110929: [fir][NFC] Move fir.global printer to cpp file
Valentin Clement via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 1 06:10:21 PDT 2021
clementval created this revision.
clementval added reviewers: jeanPerier, svedanayagam, sscalpone, kiranchandramohan, jdoerfert, schweitz, pmccormick, mehdi_amini, rovka, AlexisPerry.
Herald added a project: Flang.
clementval requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
All big enough parser, printer and verifier are moved to the cpp file.
This is one of the last one to be moved.
This patch is part of the upstreaming effort from fir-dev branch.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D110929
Files:
flang/include/flang/Optimizer/Dialect/FIROps.td
flang/lib/Optimizer/Dialect/FIROps.cpp
Index: flang/lib/Optimizer/Dialect/FIROps.cpp
===================================================================
--- flang/lib/Optimizer/Dialect/FIROps.cpp
+++ flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -1175,6 +1175,24 @@
return mlir::success();
}
+static void print(mlir::OpAsmPrinter &p, fir::GlobalOp &op) {
+ if (op.linkName().hasValue())
+ p << ' ' << op.linkName().getValue();
+ p << ' ';
+ p.printAttributeWithoutType(
+ op.getOperation()->getAttr(fir::GlobalOp::symbolAttrName()));
+ if (auto val = op.getValueOrNull())
+ p << '(' << val << ')';
+ if (op.getOperation()->getAttr(fir::GlobalOp::getConstantAttrName()))
+ p << " constant";
+ p << " : ";
+ p.printType(op.getType());
+ if (op.hasInitializationBody())
+ p.printRegion(op.getOperation()->getRegion(0),
+ /*printEntryBlockArgs=*/false,
+ /*printBlockTerminators=*/true);
+}
+
void fir::GlobalOp::appendInitialValue(mlir::Operation *op) {
getBlock().getOperations().push_back(op);
}
Index: flang/include/flang/Optimizer/Dialect/FIROps.td
===================================================================
--- flang/include/flang/Optimizer/Dialect/FIROps.td
+++ flang/include/flang/Optimizer/Dialect/FIROps.td
@@ -2678,21 +2678,7 @@
let parser = "return parseGlobalOp(parser, result);";
- let printer = [{
- if (linkName().hasValue())
- p << ' ' << linkName().getValue();
- p << ' ';
- p.printAttributeWithoutType((*this)->getAttr(symbolAttrName()));
- if (auto val = getValueOrNull())
- p << '(' << val << ')';
- if (constantAttr())
- p << " constant";
- p << " : ";
- p.printType(getType());
- if (hasInitializationBody())
- p.printRegion((*this)->getRegion(0), /*printEntryBlockArgs=*/false,
- /*printBlockTerminators=*/true);
- }];
+ let printer = "::print(p, *this);";
let skipDefaultBuilders = 1;
let builders = [
@@ -2718,6 +2704,9 @@
let extraClassDeclaration = [{
static constexpr llvm::StringRef symbolAttrName() { return "symref"; }
+ static constexpr llvm::StringRef getConstantAttrName() {
+ return "constant";
+ }
static constexpr llvm::StringRef linkageAttrName() { return "linkName"; }
/// The printable type of the global
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110929.376497.patch
Type: text/x-patch
Size: 2292 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211001/dcac8af1/attachment.bin>
More information about the llvm-commits
mailing list