@@ -2215,18 +2215,23 @@ void GlobalOp::build(OpBuilder &builder, OperationState &result, Type type,
2215
2215
result.addRegion ();
2216
2216
}
2217
2217
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_ ());
2221
2222
if (!visibility.empty ())
2222
2223
p << visibility << ' ' ;
2223
- if (getThreadLocal_ ())
2224
+ if (op. getThreadLocal_ ())
2224
2225
p << " thread_local " ;
2225
- if (auto unnamedAddr = getUnnamedAddr ()) {
2226
+ if (auto unnamedAddr = op. getUnnamedAddr ()) {
2226
2227
StringRef str = stringifyUnnamedAddr (*unnamedAddr);
2227
2228
if (!str.empty ())
2228
2229
p << str << ' ' ;
2229
2230
}
2231
+ }
2232
+
2233
+ void GlobalOp::print (OpAsmPrinter &p) {
2234
+ printCommonGlobalAndAlias<GlobalOp>(p, *this );
2230
2235
if (getConstant ())
2231
2236
p << " constant " ;
2232
2237
p.printSymbolName (getSymName ());
@@ -2309,16 +2314,16 @@ static ParseResult parseCommonGlobalAndAlias(OpAsmParser &parser,
2309
2314
parseOptionalLLVMKeyword<LLVM::Visibility, int64_t >(
2310
2315
parser, result, LLVM::Visibility::Default)));
2311
2316
2317
+ if (succeeded (parser.parseOptionalKeyword (" thread_local" )))
2318
+ result.addAttribute (OpType::getThreadLocal_AttrName (result.name ),
2319
+ parser.getBuilder ().getUnitAttr ());
2320
+
2312
2321
// Parse optional UnnamedAddr, default to None.
2313
2322
result.addAttribute (OpType::getUnnamedAddrAttrName (result.name ),
2314
2323
parser.getBuilder ().getI64IntegerAttr (
2315
2324
parseOptionalLLVMKeyword<UnnamedAddr, int64_t >(
2316
2325
parser, result, LLVM::UnnamedAddr::None)));
2317
2326
2318
- if (succeeded (parser.parseOptionalKeyword (" thread_local" )))
2319
- result.addAttribute (OpType::getThreadLocal_AttrName (result.name ),
2320
- parser.getBuilder ().getUnitAttr ());
2321
-
2322
2327
return success ();
2323
2328
}
2324
2329
@@ -2581,19 +2586,7 @@ void AliasOp::build(OpBuilder &builder, OperationState &result, Type type,
2581
2586
}
2582
2587
2583
2588
void 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 );
2597
2590
2598
2591
p.printSymbolName (getSymName ());
2599
2592
p.printOptionalAttrDict ((*this )->getAttrs (),
0 commit comments