Skip to content

Commit

Permalink
[fir][NFC] Move fir.global printer to cpp file
Browse files Browse the repository at this point in the history
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.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D110929
  • Loading branch information
clementval committed Oct 1, 2021
1 parent 0e88629 commit 3da95b6
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
19 changes: 4 additions & 15 deletions flang/include/flang/Optimizer/Dialect/FIROps.td
Expand Up @@ -2666,21 +2666,7 @@ def fir_GlobalOp : fir_Op<"global", [IsolatedFromAbove, Symbol]> {

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 = [
Expand All @@ -2706,6 +2692,9 @@ def fir_GlobalOp : fir_Op<"global", [IsolatedFromAbove, Symbol]> {

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
Expand Down
18 changes: 18 additions & 0 deletions flang/lib/Optimizer/Dialect/FIROps.cpp
Expand Up @@ -1175,6 +1175,24 @@ static ParseResult parseGlobalOp(OpAsmParser &parser, OperationState &result) {
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);
}
Expand Down

0 comments on commit 3da95b6

Please sign in to comment.