[fir][NFC] Move fir.global printer to cpp file

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
This commit is contained in:
Valentin Clement 2021-10-01 21:14:14 +02:00
parent 0e8862901c
commit 3da95b68cd
No known key found for this signature in database
GPG Key ID: 086D54783C928776
2 changed files with 22 additions and 15 deletions

View File

@ -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 = [
@ -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

View File

@ -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);
}