@@ -2215,18 +2215,23 @@ void GlobalOp::build(OpBuilder &builder, OperationState &result, Type type,
22152215 result.addRegion ();
22162216}
22172217
2218- void GlobalOp::print (OpAsmPrinter &p) {
2219- p << ' ' << stringifyLinkage (getLinkage ()) << ' ' ;
2220- StringRef visibility = stringifyVisibility (getVisibility_ ());
2218+ template <typename OpType>
2219+ static void printCommonGlobalAndAlias (OpAsmPrinter &p, OpType op) {
2220+ p << ' ' << stringifyLinkage (op.getLinkage ()) << ' ' ;
2221+ StringRef visibility = stringifyVisibility (op.getVisibility_ ());
22212222 if (!visibility.empty ())
22222223 p << visibility << ' ' ;
2223- if (getThreadLocal_ ())
2224+ if (op. getThreadLocal_ ())
22242225 p << " thread_local " ;
2225- if (auto unnamedAddr = getUnnamedAddr ()) {
2226+ if (auto unnamedAddr = op. getUnnamedAddr ()) {
22262227 StringRef str = stringifyUnnamedAddr (*unnamedAddr);
22272228 if (!str.empty ())
22282229 p << str << ' ' ;
22292230 }
2231+ }
2232+
2233+ void GlobalOp::print (OpAsmPrinter &p) {
2234+ printCommonGlobalAndAlias<GlobalOp>(p, *this );
22302235 if (getConstant ())
22312236 p << " constant " ;
22322237 p.printSymbolName (getSymName ());
@@ -2309,16 +2314,16 @@ static ParseResult parseCommonGlobalAndAlias(OpAsmParser &parser,
23092314 parseOptionalLLVMKeyword<LLVM::Visibility, int64_t >(
23102315 parser, result, LLVM::Visibility::Default)));
23112316
2317+ if (succeeded (parser.parseOptionalKeyword (" thread_local" )))
2318+ result.addAttribute (OpType::getThreadLocal_AttrName (result.name ),
2319+ parser.getBuilder ().getUnitAttr ());
2320+
23122321 // Parse optional UnnamedAddr, default to None.
23132322 result.addAttribute (OpType::getUnnamedAddrAttrName (result.name ),
23142323 parser.getBuilder ().getI64IntegerAttr (
23152324 parseOptionalLLVMKeyword<UnnamedAddr, int64_t >(
23162325 parser, result, LLVM::UnnamedAddr::None)));
23172326
2318- if (succeeded (parser.parseOptionalKeyword (" thread_local" )))
2319- result.addAttribute (OpType::getThreadLocal_AttrName (result.name ),
2320- parser.getBuilder ().getUnitAttr ());
2321-
23222327 return success ();
23232328}
23242329
@@ -2581,19 +2586,7 @@ void AliasOp::build(OpBuilder &builder, OperationState &result, Type type,
25812586}
25822587
25832588void AliasOp::print (OpAsmPrinter &p) {
2584- p << ' ' << stringifyLinkage (getLinkage ()) << ' ' ;
2585- StringRef visibility = stringifyVisibility (getVisibility_ ());
2586- if (!visibility.empty ())
2587- p << visibility << ' ' ;
2588-
2589- if (std::optional<mlir::LLVM::UnnamedAddr> unnamedAddr = getUnnamedAddr ()) {
2590- StringRef str = stringifyUnnamedAddr (*unnamedAddr);
2591- if (!str.empty ())
2592- p << str << ' ' ;
2593- }
2594-
2595- if (getThreadLocal_ ())
2596- p << " thread_local " ;
2589+ printCommonGlobalAndAlias<AliasOp>(p, *this );
25972590
25982591 p.printSymbolName (getSymName ());
25992592 p.printOptionalAttrDict ((*this )->getAttrs (),
0 commit comments