Skip to content

Commit c73906e

Browse files
committed
MCParser: Reduce VK_None uses
1 parent 80625c1 commit c73906e

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

llvm/lib/MC/MCParser/AsmParser.cpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)