[llvm] 7ccdc3d - [MC] Replace getSymA()->getSymbol() with getAddSym. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 5 13:16:30 PDT 2025
Author: Fangrui Song
Date: 2025-04-05T13:16:25-07:00
New Revision: 7ccdc3d5ca648c09bbeb86f5063f7b0ee3e9b5e2
URL: https://github.com/llvm/llvm-project/commit/7ccdc3d5ca648c09bbeb86f5063f7b0ee3e9b5e2
DIFF: https://github.com/llvm/llvm-project/commit/7ccdc3d5ca648c09bbeb86f5063f7b0ee3e9b5e2.diff
LOG: [MC] Replace getSymA()->getSymbol() with getAddSym. NFC
We will replace the MCSymbolRefExpr member in MCValue with MCSymbol.
This change reduces dependence on MCSymbolRefExpr.
Added:
Modified:
llvm/lib/MC/ELFObjectWriter.cpp
llvm/lib/MC/MCAssembler.cpp
llvm/lib/MC/MCExpr.cpp
llvm/lib/MC/MachObjectWriter.cpp
llvm/lib/MC/XCOFFObjectWriter.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index f3445daf73ac1..23d5517920e7b 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -1251,10 +1251,9 @@ bool ELFObjectWriter::shouldRelocateWithSymbol(const MCAssembler &Asm,
const MCSymbolELF *Sym,
uint64_t C,
unsigned Type) const {
- const MCSymbolRefExpr *RefA = Val.getSymA();
// A PCRel relocation to an absolute value has no symbol (or section). We
// represent that with a relocation to a null section.
- if (!RefA)
+ if (!Val.getAddSym())
return false;
// An undefined symbol is not in any section, so the relocation has to point
@@ -1379,8 +1378,8 @@ void ELFObjectWriter::recordRelocation(MCAssembler &Asm,
if (auto *RefB = Target.getSubSym()) {
// When there is no relocation specifier, a linker relaxation target may
// emit ADD/SUB relocations for A-B+C.
- if (Target.getSymA() && Backend.handleAddSubRelocations(
- Asm, *Fragment, Fixup, Target, FixedValue))
+ if (Target.getAddSym() && Backend.handleAddSubRelocations(
+ Asm, *Fragment, Fixup, Target, FixedValue))
return;
const auto &SymB = cast<MCSymbolELF>(*RefB);
@@ -1405,8 +1404,8 @@ void ELFObjectWriter::recordRelocation(MCAssembler &Asm,
}
// We either rejected the fixup or folded B into C at this point.
- const MCSymbolRefExpr *RefA = Target.getSymA();
- const auto *SymA = RefA ? cast<MCSymbolELF>(&RefA->getSymbol()) : nullptr;
+ const auto *RefA = Target.getAddSym();
+ const auto *SymA = RefA ? cast<MCSymbolELF>(RefA) : nullptr;
bool ViaWeakRef = false;
if (SymA && SymA->isVariable()) {
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 962b8e006dc0b..39ff41e89f1e2 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -125,15 +125,11 @@ bool MCAssembler::isThumbFunc(const MCSymbol *Symbol) const {
if (V.getSubSym() || V.getRefKind() != MCSymbolRefExpr::VK_None)
return false;
- const MCSymbolRefExpr *Ref = V.getSymA();
- if (!Ref)
+ auto *Sym = V.getAddSym();
+ if (!Sym || V.getSymSpecifier())
return false;
- if (Ref->getKind() != MCSymbolRefExpr::VK_None)
- return false;
-
- const MCSymbol &Sym = Ref->getSymbol();
- if (!isThumbFunc(&Sym))
+ if (!isThumbFunc(Sym))
return false;
ThumbFuncs.insert(Symbol); // Cache it.
@@ -460,14 +456,14 @@ static bool getSymbolOffsetImpl(const MCAssembler &Asm, const MCSymbol &S,
uint64_t Offset = Target.getConstant();
- const MCSymbolRefExpr *A = Target.getSymA();
+ const MCSymbol *A = Target.getAddSym();
if (A) {
uint64_t ValA;
// FIXME: On most platforms, `Target`'s component symbols are labels from
// having been simplified during evaluation, but on Mach-O they can be
// variables due to PR19203. This, and the line below for `B` can be
// restored to call `getLabelOffset` when PR19203 is fixed.
- if (!getSymbolOffsetImpl(Asm, A->getSymbol(), ReportError, ValA))
+ if (!getSymbolOffsetImpl(Asm, *A, ReportError, ValA))
return false;
Offset += ValA;
}
@@ -516,11 +512,11 @@ const MCSymbol *MCAssembler::getBaseSymbol(const MCSymbol &Symbol) const {
return nullptr;
}
- const MCSymbolRefExpr *A = Value.getSymA();
+ const MCSymbol *A = Value.getAddSym();
if (!A)
return nullptr;
- const MCSymbol &ASym = A->getSymbol();
+ const MCSymbol &ASym = *A;
if (ASym.isCommon()) {
getContext().reportError(Expr->getLoc(),
"Common symbol '" + ASym.getName() +
diff --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp
index 11a5a739b4a06..1a7c4590c1219 100644
--- a/llvm/lib/MC/MCExpr.cpp
+++ b/llvm/lib/MC/MCExpr.cpp
@@ -536,15 +536,14 @@ bool MCExpr::evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm,
if (Res.getRefKind() != MCSymbolRefExpr::VK_None || !Res.getSymA() ||
Res.getSubSym() || Res.getConstant())
return false;
- Res =
- MCValue::get(MCSymbolRefExpr::create(&Res.getSymA()->getSymbol(),
- Kind, Asm->getContext()),
- Res.getSymB(), Res.getConstant(), Res.getRefKind());
+ Res = MCValue::get(
+ MCSymbolRefExpr::create(Res.getAddSym(), Kind, Asm->getContext()),
+ Res.getSymB(), Res.getConstant(), Res.getRefKind());
}
if (!IsMachO)
return true;
- const MCSymbolRefExpr *A = Res.getSymA();
+ auto *A = Res.getAddSym();
auto *B = Res.getSubSym();
// FIXME: This is small hack. Given
// a = b + 4
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 31758214e5ab6..dc1d8e003b34f 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -109,9 +109,9 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
S.getName() + "'");
// Verify that any used symbols are defined.
- if (Target.getSymA() && Target.getSymA()->getSymbol().isUndefined())
+ if (Target.getSymA() && Target.getAddSym()->isUndefined())
report_fatal_error("unable to evaluate offset to undefined symbol '" +
- Target.getSymA()->getSymbol().getName() + "'");
+ Target.getAddSym()->getName() + "'");
if (Target.getSubSym() && Target.getSubSym()->isUndefined())
report_fatal_error("unable to evaluate offset to undefined symbol '" +
Target.getSubSym()->getName() + "'");
@@ -507,7 +507,7 @@ void MachObjectWriter::writeLinkerOptionsLoadCommand(
static bool isFixupTargetValid(const MCValue &Target) {
// Target is (LHS - RHS + cst).
// We don't support the form where LHS is null: -RHS + cst
- if (!Target.getSymA() && Target.getSubSym())
+ if (!Target.getAddSym() && Target.getSubSym())
return false;
return true;
}
diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp
index cc150649f1139..0834568f6dfe6 100644
--- a/llvm/lib/MC/XCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -686,7 +686,7 @@ void XCOFFWriter::recordRelocation(MCAssembler &Asm, const MCFragment *Fragment,
return SectionMap[ContainingSect]->Address + Asm.getSymbolOffset(*Sym);
};
- const MCSymbol *const SymA = &Target.getSymA()->getSymbol();
+ const MCSymbol *const SymA = Target.getAddSym();
MCAsmBackend &Backend = Asm.getBackend();
bool IsPCRel = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
index cca337a1a66dd..bc967e3e8a6e8 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
@@ -176,11 +176,10 @@ void AArch64MachObjectWriter::recordRelocation(
// assembler local symbols. If we got here, that's not what we have,
// so complain loudly.
if (Kind == AArch64::fixup_aarch64_pcrel_branch19) {
- Asm.getContext().reportError(Fixup.getLoc(),
- "conditional branch requires assembler-local"
- " label. '" +
- Target.getSymA()->getSymbol().getName() +
- "' is external.");
+ Asm.getContext().reportError(
+ Fixup.getLoc(), "conditional branch requires assembler-local"
+ " label. '" +
+ Target.getAddSym()->getName() + "' is external.");
return;
}
@@ -214,7 +213,7 @@ void AArch64MachObjectWriter::recordRelocation(
// something similar?
}
} else if (auto *B = Target.getSubSym()) { // A - B + constant
- const MCSymbol *A = &Target.getSymA()->getSymbol();
+ const MCSymbol *A = Target.getAddSym();
const MCSymbol *A_Base = Writer->getAtom(*A);
const MCSymbol *B_Base = Writer->getAtom(*B);
@@ -293,7 +292,7 @@ void AArch64MachObjectWriter::recordRelocation(
RelSymbol = B_Base;
Type = MachO::ARM64_RELOC_SUBTRACTOR;
} else { // A + constant
- const MCSymbol *Symbol = &Target.getSymA()->getSymbol();
+ const MCSymbol *Symbol = Target.getAddSym();
const MCSectionMachO &Section =
static_cast<const MCSectionMachO &>(*Fragment->getParent());
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
index e7348326a69cf..353e4fa5b2a9d 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
@@ -149,7 +149,7 @@ void ARMMachObjectWriter::recordARMScatteredHalfRelocation(
unsigned Type = MachO::ARM_RELOC_HALF;
// See <reloc.h>.
- const MCSymbol *A = &Target.getSymA()->getSymbol();
+ const MCSymbol *A = Target.getAddSym();
if (!A->getFragment()) {
Asm.getContext().reportError(Fixup.getLoc(),
@@ -257,7 +257,7 @@ void ARMMachObjectWriter::recordARMScatteredRelocation(
unsigned IsPCRel = Writer->isFixupKindPCRel(Asm, Fixup.getKind());
// See <reloc.h>.
- const MCSymbol *A = &Target.getSymA()->getSymbol();
+ const MCSymbol *A = Target.getAddSym();
if (!A->getFragment()) {
Asm.getContext().reportError(Fixup.getLoc(),
@@ -388,7 +388,7 @@ void ARMMachObjectWriter::recordRelocation(MachObjectWriter *Writer,
// Get the symbol data, if any.
const MCSymbol *A = nullptr;
if (Target.getSymA())
- A = &Target.getSymA()->getSymbol();
+ A = Target.getAddSym();
// FIXME: For other platforms, we need to use scattered relocations for
// internal relocations with offsets. If this is an internal relocation with
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 8c6fe0b77d234..15ada7fc608f0 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -2945,15 +2945,14 @@ bool MipsAsmParser::loadAndAddSymbolAddress(const MCExpr *SymExpr,
bool IsPtr64 = ABI.ArePtrs64bit();
bool IsLocalSym =
- Res.getSymA()->getSymbol().isInSection() ||
- Res.getSymA()->getSymbol().isTemporary() ||
- (Res.getSymA()->getSymbol().isELF() &&
+ Res.getAddSym()->isInSection() || Res.getAddSym()->isTemporary() ||
+ (Res.getAddSym()->isELF() &&
cast<MCSymbolELF>(Res.getSymA()->getSymbol()).getBinding() ==
ELF::STB_LOCAL);
// For O32, "$"-prefixed symbols are recognized as temporary while
// .L-prefixed symbols are not (PrivateGlobalPrefix is "$"). Recognize ".L"
// manually.
- if (ABI.IsO32() && Res.getSymA()->getSymbol().getName().starts_with(".L"))
+ if (ABI.IsO32() && Res.getAddSym()->getName().starts_with(".L"))
IsLocalSym = true;
bool UseXGOT = STI->hasFeature(Mips::FeatureXGOT) && !IsLocalSym;
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
index 131ef44407407..e689c534b7058 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp
@@ -277,7 +277,7 @@ namespace {
default:
return false;
case Sparc::fixup_sparc_wplt30:
- if (Target.getSymA()->getSymbol().isTemporary())
+ if (Target.getAddSym()->isTemporary())
return false;
[[fallthrough]];
case Sparc::fixup_sparc_tls_gd_hi22:
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
index 205392a2c96be..ca10f4716ba8c 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
@@ -353,8 +353,8 @@ unsigned X86ELFObjectWriter::getRelocType(MCContext &Ctx, const MCValue &Target,
case X86MCExpr::VK_TLSLDM:
case X86MCExpr::VK_TPOFF:
case X86MCExpr::VK_DTPOFF:
- if (auto *S = Target.getSymA())
- cast<MCSymbolELF>(S->getSymbol()).setType(ELF::STT_TLS);
+ if (auto *S = Target.getAddSym())
+ cast<MCSymbolELF>(S)->setType(ELF::STT_TLS);
break;
default:
break;
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
index c76ef4e936409..6871b8adeebbd 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
@@ -140,7 +140,7 @@ void X86MachObjectWriter::RecordX86_64Relocation(
Type = MachO::X86_64_RELOC_BRANCH;
}
} else if (Target.getSubSym()) { // A - B + constant
- const MCSymbol *A = &Target.getSymA()->getSymbol();
+ const MCSymbol *A = Target.getAddSym();
if (A->isTemporary())
A = &Writer->findAliasedSymbol(*A);
const MCSymbol *A_Base = Writer->getAtom(*A);
@@ -212,7 +212,7 @@ void X86MachObjectWriter::RecordX86_64Relocation(
Index = B->getFragment()->getParent()->getOrdinal() + 1;
Type = MachO::X86_64_RELOC_SUBTRACTOR;
} else {
- const MCSymbol *Symbol = &Target.getSymA()->getSymbol();
+ const MCSymbol *Symbol = Target.getAddSym();
if (Symbol->isTemporary() && Value) {
const MCSection &Sec = Symbol->getSection();
if (!MCAsmInfoDarwin::isSectionAtomizableBySymbols(Sec))
@@ -370,7 +370,7 @@ bool X86MachObjectWriter::recordScatteredRelocation(MachObjectWriter *Writer,
unsigned Type = MachO::GENERIC_RELOC_VANILLA;
// See <reloc.h>.
- const MCSymbol *A = &Target.getSymA()->getSymbol();
+ const MCSymbol *A = Target.getAddSym();
if (!A->getFragment()) {
Asm.getContext().reportError(
@@ -500,9 +500,10 @@ void X86MachObjectWriter::RecordX86Relocation(MachObjectWriter *Writer,
uint64_t &FixedValue) {
unsigned IsPCRel = Writer->isFixupKindPCRel(Asm, Fixup.getKind());
unsigned Log2Size = getFixupKindLog2Size(Fixup.getKind());
+ const MCSymbol *A = Target.getAddSym();
// If this is a 32-bit TLVP reloc it's handled a bit
diff erently.
- if (Target.getSymA() && Target.getSymSpecifier() == X86MCExpr::VK_TLVP) {
+ if (A && Target.getSymSpecifier() == X86MCExpr::VK_TLVP) {
recordTLVPRelocation(Writer, Asm, Fragment, Fixup, Target, FixedValue);
return;
}
@@ -516,11 +517,6 @@ void X86MachObjectWriter::RecordX86Relocation(MachObjectWriter *Writer,
return;
}
- // Get the symbol data, if any.
- const MCSymbol *A = nullptr;
- if (Target.getSymA())
- A = &Target.getSymA()->getSymbol();
-
// If this is an internal relocation with an offset, it also needs a scattered
// relocation entry.
uint32_t Offset = Target.getConstant();
More information about the llvm-commits
mailing list