forked from OSchip/llvm-project
[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:
parent
0e8862901c
commit
3da95b68cd
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue