[llvm] c73906e - MCParser: Reduce VK_None uses
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 27 22:02:27 PDT 2025
Author: Fangrui Song
Date: 2025-06-27T22:02:22-07:00
New Revision: c73906ec691d1db40e6e5644b5bf184958e3d582
URL: https://github.com/llvm/llvm-project/commit/c73906ec691d1db40e6e5644b5bf184958e3d582
DIFF: https://github.com/llvm/llvm-project/commit/c73906ec691d1db40e6e5644b5bf184958e3d582.diff
LOG: MCParser: Reduce VK_None uses
Added:
Modified:
llvm/lib/MC/MCParser/AsmParser.cpp
Removed:
################################################################################
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 3a5cda6e670c9..3aff203ccfa55 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -1207,17 +1207,14 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
if (SymbolName.empty())
return Error(getLexer().getLoc(), "expected a symbol reference");
- MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
-
- // Lookup the symbol variant if used.
+ // Lookup the @specifier if used.
+ uint16_t Spec = 0;
if (!Split.second.empty()) {
- auto MaybeVariant = MAI.getSpecifierForName(Split.second);
- if (MaybeVariant) {
+ auto MaybeSpecifier = MAI.getSpecifierForName(Split.second);
+ if (MaybeSpecifier) {
SymbolName = Split.first;
- Variant = MCSymbolRefExpr::VariantKind(*MaybeVariant);
- } else if (MAI.doesAllowAtInName()) {
- Variant = MCSymbolRefExpr::VK_None;
- } else {
+ Spec = *MaybeSpecifier;
+ } else if (!MAI.doesAllowAtInName()) {
return Error(SMLoc::getFromPointer(Split.second.begin()),
"invalid variant '" + Split.second + "'");
}
@@ -1232,11 +1229,11 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
// semantics in the face of reassignment.
if (Sym->isVariable()) {
auto V = Sym->getVariableValue();
- bool DoInline = isa<MCConstantExpr>(V) && !Variant;
+ bool DoInline = isa<MCConstantExpr>(V) && !Spec;
if (auto TV = dyn_cast<MCTargetExpr>(V))
DoInline = TV->inlineAssignedExpr();
if (DoInline) {
- if (Variant)
+ if (Spec)
return Error(EndLoc, "unexpected modifier on variable reference");
Res = Sym->getVariableValue();
return false;
@@ -1244,7 +1241,7 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
}
// Otherwise create a symbol ref.
- Res = MCSymbolRefExpr::create(Sym, Variant, getContext(), FirstTokenLoc);
+ Res = MCSymbolRefExpr::create(Sym, Spec, getContext(), FirstTokenLoc);
return false;
}
case AsmToken::BigNum:
@@ -1260,13 +1257,13 @@ bool AsmParser::parsePrimaryExpr(const MCExpr *&Res, SMLoc &EndLoc,
StringRef IDVal = getTok().getString();
// Lookup the symbol variant if used.
std::pair<StringRef, StringRef> Split = IDVal.split('@');
- MCSymbolRefExpr::VariantKind Spec = MCSymbolRefExpr::VK_None;
+ uint16_t Spec = 0;
if (Split.first.size() != IDVal.size()) {
auto MaybeSpec = MAI.getSpecifierForName(Split.second);
if (!MaybeSpec)
return TokError("invalid variant '" + Split.second + "'");
IDVal = Split.first;
- Spec = MCSymbolRefExpr::VariantKind(*MaybeSpec);
+ Spec = *MaybeSpec;
}
if (IDVal == "f" || IDVal == "b") {
MCSymbol *Sym =
More information about the llvm-commits
mailing list