[llvm] 06ab660 - MCSymbol: Avoid isExported/setExported
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 22 00:26:00 PDT 2025
Author: Fangrui Song
Date: 2025-08-22T00:25:55-07:00
New Revision: 06ab660911eef084716fdc6f13595cdbff9da08a
URL: https://github.com/llvm/llvm-project/commit/06ab660911eef084716fdc6f13595cdbff9da08a
DIFF: https://github.com/llvm/llvm-project/commit/06ab660911eef084716fdc6f13595cdbff9da08a.diff
LOG: MCSymbol: Avoid isExported/setExported
The next change will move these methods from the base class.
Added:
Modified:
llvm/include/llvm/MC/MCMachObjectWriter.h
llvm/lib/MC/MCMachOStreamer.cpp
llvm/lib/MC/MCXCOFFStreamer.cpp
llvm/lib/MC/MachObjectWriter.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h
index 170e2e74c671a..41416a2f9c698 100644
--- a/llvm/include/llvm/MC/MCMachObjectWriter.h
+++ b/llvm/include/llvm/MC/MCMachObjectWriter.h
@@ -17,6 +17,7 @@
#include "llvm/MC/MCLinkerOptimizationHint.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCSectionMachO.h"
+#include "llvm/MC/MCSymbolMachO.h"
#include "llvm/MC/StringTableBuilder.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/EndianStream.h"
@@ -110,7 +111,7 @@ class LLVM_ABI MachObjectWriter final : public MCObjectWriter {
private:
/// Helper struct for containing some precomputed information on symbols.
struct MachSymbolData {
- const MCSymbol *Symbol;
+ const MCSymbolMachO *Symbol;
uint64_t StringIndex;
uint8_t SectionIndex;
@@ -119,7 +120,7 @@ class LLVM_ABI MachObjectWriter final : public MCObjectWriter {
};
struct IndirectSymbolData {
- MCSymbol *Symbol;
+ MCSymbolMachO *Symbol;
MCSection *Section;
};
diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index 6226b02a0615b..2b7a248e6d109 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/lib/MC/MCMachOStreamer.cpp
@@ -149,7 +149,7 @@ void MCMachOStreamer::emitEHSymAttributes(const MCSymbol *Symbol,
MCSymbol *EHSymbol) {
auto *Sym = static_cast<const MCSymbolMachO *>(Symbol);
getAssembler().registerSymbol(*Symbol);
- if (Symbol->isExternal())
+ if (Sym->isExternal())
emitSymbolAttribute(EHSymbol, MCSA_Global);
if (Sym->isWeakDefinition())
emitSymbolAttribute(EHSymbol, MCSA_WeakDefinition);
@@ -372,12 +372,13 @@ void MCMachOStreamer::emitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {
void MCMachOStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
Align ByteAlignment) {
+ auto &Sym = static_cast<MCSymbolMachO &>(*Symbol);
// FIXME: Darwin 'as' does appear to allow redef of a .comm by itself.
assert(Symbol->isUndefined() && "Cannot define a symbol twice!");
- getAssembler().registerSymbol(*Symbol);
- Symbol->setExternal(true);
- Symbol->setCommon(Size, ByteAlignment);
+ getAssembler().registerSymbol(Sym);
+ Sym.setExternal(true);
+ Sym.setCommon(Size, ByteAlignment);
}
void MCMachOStreamer::emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
@@ -460,7 +461,8 @@ void MCMachOStreamer::finishImpl() {
}
void MCMachOStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) {
- const MCSymbol *S = &SRE->getSymbol();
+ auto *S =
+ static_cast<MCSymbolMachO *>(const_cast<MCSymbol *>(&SRE->getSymbol()));
if (getAssembler().registerSymbol(*S))
S->setExternal(true);
}
diff --git a/llvm/lib/MC/MCXCOFFStreamer.cpp b/llvm/lib/MC/MCXCOFFStreamer.cpp
index 684e05a9be095..4bf14c11068cb 100644
--- a/llvm/lib/MC/MCXCOFFStreamer.cpp
+++ b/llvm/lib/MC/MCXCOFFStreamer.cpp
@@ -128,14 +128,14 @@ void MCXCOFFStreamer::emitXCOFFCInfoSym(StringRef Name, StringRef Metadata) {
void MCXCOFFStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
Align ByteAlignment) {
- auto *Sym = static_cast<MCSymbolXCOFF *>(Symbol);
+ auto &Sym = static_cast<MCSymbolXCOFF &>(*Symbol);
getAssembler().registerSymbol(*Symbol);
- Symbol->setExternal(Sym->getStorageClass() != XCOFF::C_HIDEXT);
+ Sym.setExternal(Sym.getStorageClass() != XCOFF::C_HIDEXT);
Symbol->setCommon(Size, ByteAlignment);
// Default csect align is 4, but common symbols have explicit alignment values
// and we should honor it.
- Sym->getRepresentedCsect()->setAlignment(ByteAlignment);
+ Sym.getRepresentedCsect()->setAlignment(ByteAlignment);
// Emit the alignment and storage for the variable to the section.
emitValueToAlignment(ByteAlignment);
diff --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index eb59e39d73eda..39542bfbdd8e3 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -383,7 +383,7 @@ const MCSymbol &MachObjectWriter::findAliasedSymbol(const MCSymbol &Sym) const {
}
void MachObjectWriter::writeNlist(MachSymbolData &MSD, const MCAssembler &Asm) {
- auto *Symbol = static_cast<const MCSymbolMachO *>(MSD.Symbol);
+ auto *Symbol = MSD.Symbol;
const auto &Data = static_cast<const MCSymbolMachO &>(*Symbol);
auto *AliasedSymbol =
static_cast<const MCSymbolMachO *>(&findAliasedSymbol(*Symbol));
@@ -602,15 +602,16 @@ void MachObjectWriter::computeSymbolTable(
// match 'as'. Even though it doesn't matter for correctness, this is
// important for letting us
diff .o files.
for (const MCSymbol &Symbol : Asm.symbols()) {
+ auto &Sym = static_cast<const MCSymbolMachO &>(Symbol);
// Ignore non-linker visible symbols.
- if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
+ if (!Sym.isSymbolLinkerVisible())
continue;
- if (!Symbol.isExternal() && !Symbol.isUndefined())
+ if (!Sym.isExternal() && !Sym.isUndefined())
continue;
MachSymbolData MSD;
- MSD.Symbol = &Symbol;
+ MSD.Symbol = &Sym;
MSD.StringIndex = StringTable.getOffset(Symbol.getName());
if (Symbol.isUndefined()) {
@@ -628,15 +629,16 @@ void MachObjectWriter::computeSymbolTable(
// Now add the data for local symbols.
for (const MCSymbol &Symbol : Asm.symbols()) {
+ auto &Sym = static_cast<const MCSymbolMachO &>(Symbol);
// Ignore non-linker visible symbols.
- if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
+ if (!Sym.isSymbolLinkerVisible())
continue;
- if (Symbol.isExternal() || Symbol.isUndefined())
+ if (Sym.isExternal() || Sym.isUndefined())
continue;
MachSymbolData MSD;
- MSD.Symbol = &Symbol;
+ MSD.Symbol = &Sym;
MSD.StringIndex = StringTable.getOffset(Symbol.getName());
if (Symbol.isAbsolute()) {
More information about the llvm-commits
mailing list