Skip to content

Commit 06ab660

Browse files
committed
MCSymbol: Avoid isExported/setExported
The next change will move these methods from the base class.
1 parent 36dc614 commit 06ab660

File tree

4 files changed

+22
-17
lines changed

4 files changed

+22
-17
lines changed

llvm/include/llvm/MC/MCMachObjectWriter.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "llvm/MC/MCLinkerOptimizationHint.h"
1818
#include "llvm/MC/MCObjectWriter.h"
1919
#include "llvm/MC/MCSectionMachO.h"
20+
#include "llvm/MC/MCSymbolMachO.h"
2021
#include "llvm/MC/StringTableBuilder.h"
2122
#include "llvm/Support/Compiler.h"
2223
#include "llvm/Support/EndianStream.h"
@@ -110,7 +111,7 @@ class LLVM_ABI MachObjectWriter final : public MCObjectWriter {
110111
private:
111112
/// Helper struct for containing some precomputed information on symbols.
112113
struct MachSymbolData {
113-
const MCSymbol *Symbol;
114+
const MCSymbolMachO *Symbol;
114115
uint64_t StringIndex;
115116
uint8_t SectionIndex;
116117

@@ -119,7 +120,7 @@ class LLVM_ABI MachObjectWriter final : public MCObjectWriter {
119120
};
120121

121122
struct IndirectSymbolData {
122-
MCSymbol *Symbol;
123+
MCSymbolMachO *Symbol;
123124
MCSection *Section;
124125
};
125126

llvm/lib/MC/MCMachOStreamer.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ void MCMachOStreamer::emitEHSymAttributes(const MCSymbol *Symbol,
149149
MCSymbol *EHSymbol) {
150150
auto *Sym = static_cast<const MCSymbolMachO *>(Symbol);
151151
getAssembler().registerSymbol(*Symbol);
152-
if (Symbol->isExternal())
152+
if (Sym->isExternal())
153153
emitSymbolAttribute(EHSymbol, MCSA_Global);
154154
if (Sym->isWeakDefinition())
155155
emitSymbolAttribute(EHSymbol, MCSA_WeakDefinition);
@@ -372,12 +372,13 @@ void MCMachOStreamer::emitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {
372372

373373
void MCMachOStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
374374
Align ByteAlignment) {
375+
auto &Sym = static_cast<MCSymbolMachO &>(*Symbol);
375376
// FIXME: Darwin 'as' does appear to allow redef of a .comm by itself.
376377
assert(Symbol->isUndefined() && "Cannot define a symbol twice!");
377378

378-
getAssembler().registerSymbol(*Symbol);
379-
Symbol->setExternal(true);
380-
Symbol->setCommon(Size, ByteAlignment);
379+
getAssembler().registerSymbol(Sym);
380+
Sym.setExternal(true);
381+
Sym.setCommon(Size, ByteAlignment);
381382
}
382383

383384
void MCMachOStreamer::emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
@@ -460,7 +461,8 @@ void MCMachOStreamer::finishImpl() {
460461
}
461462

462463
void MCMachOStreamer::finalizeCGProfileEntry(const MCSymbolRefExpr *&SRE) {
463-
const MCSymbol *S = &SRE->getSymbol();
464+
auto *S =
465+
static_cast<MCSymbolMachO *>(const_cast<MCSymbol *>(&SRE->getSymbol()));
464466
if (getAssembler().registerSymbol(*S))
465467
S->setExternal(true);
466468
}

llvm/lib/MC/MCXCOFFStreamer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,14 @@ void MCXCOFFStreamer::emitXCOFFCInfoSym(StringRef Name, StringRef Metadata) {
128128

129129
void MCXCOFFStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
130130
Align ByteAlignment) {
131-
auto *Sym = static_cast<MCSymbolXCOFF *>(Symbol);
131+
auto &Sym = static_cast<MCSymbolXCOFF &>(*Symbol);
132132
getAssembler().registerSymbol(*Symbol);
133-
Symbol->setExternal(Sym->getStorageClass() != XCOFF::C_HIDEXT);
133+
Sym.setExternal(Sym.getStorageClass() != XCOFF::C_HIDEXT);
134134
Symbol->setCommon(Size, ByteAlignment);
135135

136136
// Default csect align is 4, but common symbols have explicit alignment values
137137
// and we should honor it.
138-
Sym->getRepresentedCsect()->setAlignment(ByteAlignment);
138+
Sym.getRepresentedCsect()->setAlignment(ByteAlignment);
139139

140140
// Emit the alignment and storage for the variable to the section.
141141
emitValueToAlignment(ByteAlignment);

llvm/lib/MC/MachObjectWriter.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ const MCSymbol &MachObjectWriter::findAliasedSymbol(const MCSymbol &Sym) const {
383383
}
384384

385385
void MachObjectWriter::writeNlist(MachSymbolData &MSD, const MCAssembler &Asm) {
386-
auto *Symbol = static_cast<const MCSymbolMachO *>(MSD.Symbol);
386+
auto *Symbol = MSD.Symbol;
387387
const auto &Data = static_cast<const MCSymbolMachO &>(*Symbol);
388388
auto *AliasedSymbol =
389389
static_cast<const MCSymbolMachO *>(&findAliasedSymbol(*Symbol));
@@ -602,15 +602,16 @@ void MachObjectWriter::computeSymbolTable(
602602
// match 'as'. Even though it doesn't matter for correctness, this is
603603
// important for letting us diff .o files.
604604
for (const MCSymbol &Symbol : Asm.symbols()) {
605+
auto &Sym = static_cast<const MCSymbolMachO &>(Symbol);
605606
// Ignore non-linker visible symbols.
606-
if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
607+
if (!Sym.isSymbolLinkerVisible())
607608
continue;
608609

609-
if (!Symbol.isExternal() && !Symbol.isUndefined())
610+
if (!Sym.isExternal() && !Sym.isUndefined())
610611
continue;
611612

612613
MachSymbolData MSD;
613-
MSD.Symbol = &Symbol;
614+
MSD.Symbol = &Sym;
614615
MSD.StringIndex = StringTable.getOffset(Symbol.getName());
615616

616617
if (Symbol.isUndefined()) {
@@ -628,15 +629,16 @@ void MachObjectWriter::computeSymbolTable(
628629

629630
// Now add the data for local symbols.
630631
for (const MCSymbol &Symbol : Asm.symbols()) {
632+
auto &Sym = static_cast<const MCSymbolMachO &>(Symbol);
631633
// Ignore non-linker visible symbols.
632-
if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
634+
if (!Sym.isSymbolLinkerVisible())
633635
continue;
634636

635-
if (Symbol.isExternal() || Symbol.isUndefined())
637+
if (Sym.isExternal() || Sym.isUndefined())
636638
continue;
637639

638640
MachSymbolData MSD;
639-
MSD.Symbol = &Symbol;
641+
MSD.Symbol = &Sym;
640642
MSD.StringIndex = StringTable.getOffset(Symbol.getName());
641643

642644
if (Symbol.isAbsolute()) {

0 commit comments

Comments
 (0)