@@ -1207,17 +1207,14 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
12071207 if (SymbolName.empty ())
12081208 return Error (getLexer ().getLoc (), " expected a symbol reference" );
12091209
1210- MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
1211-
1212- // Lookup the symbol variant if used.
1210+ // Lookup the @specifier if used.
1211+ uint16_t Spec = 0 ;
12131212 if (!Split.second .empty ()) {
1214- auto MaybeVariant = MAI.getSpecifierForName (Split.second );
1215- if (MaybeVariant ) {
1213+ auto MaybeSpecifier = MAI.getSpecifierForName (Split.second );
1214+ if (MaybeSpecifier ) {
12161215 SymbolName = Split.first ;
1217- Variant = MCSymbolRefExpr::VariantKind (*MaybeVariant);
1218- } else if (MAI.doesAllowAtInName ()) {
1219- Variant = MCSymbolRefExpr::VK_None;
1220- } else {
1216+ Spec = *MaybeSpecifier;
1217+ } else if (!MAI.doesAllowAtInName ()) {
12211218 return Error (SMLoc::getFromPointer (Split.second .begin ()),
12221219 " invalid variant '" + Split.second + " '" );
12231220 }
@@ -1232,19 +1229,19 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
12321229 // semantics in the face of reassignment.
12331230 if (Sym->isVariable ()) {
12341231 auto V = Sym->getVariableValue ();
1235- bool DoInline = isa<MCConstantExpr>(V) && !Variant ;
1232+ bool DoInline = isa<MCConstantExpr>(V) && !Spec ;
12361233 if (auto TV = dyn_cast<MCTargetExpr>(V))
12371234 DoInline = TV->inlineAssignedExpr ();
12381235 if (DoInline) {
1239- if (Variant )
1236+ if (Spec )
12401237 return Error (EndLoc, " unexpected modifier on variable reference" );
12411238 Res = Sym->getVariableValue ();
12421239 return false ;
12431240 }
12441241 }
12451242
12461243 // Otherwise create a symbol ref.
1247- Res = MCSymbolRefExpr::create (Sym, Variant , getContext (), FirstTokenLoc);
1244+ Res = MCSymbolRefExpr::create (Sym, Spec , getContext (), FirstTokenLoc);
12481245 return false ;
12491246 }
12501247 case AsmToken::BigNum:
@@ -1260,13 +1257,13 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
12601257 StringRef IDVal = getTok ().getString ();
12611258 // Lookup the symbol variant if used.
12621259 std::pair<StringRef, StringRef> Split = IDVal.split (' @' );
1263- MCSymbolRefExpr::VariantKind Spec = MCSymbolRefExpr::VK_None ;
1260+ uint16_t Spec = 0 ;
12641261 if (Split.first .size () != IDVal.size ()) {
12651262 auto MaybeSpec = MAI.getSpecifierForName (Split.second );
12661263 if (!MaybeSpec)
12671264 return TokError (" invalid variant '" + Split.second + " '" );
12681265 IDVal = Split.first ;
1269- Spec = MCSymbolRefExpr::VariantKind ( *MaybeSpec) ;
1266+ Spec = *MaybeSpec;
12701267 }
12711268 if (IDVal == " f" || IDVal == " b" ) {
12721269 MCSymbol *Sym =
0 commit comments