Skip to content

Commit b77f51f

Browse files
committed
MCSymbolXOFF: Remove classof
The object file format specific derived classes are used in context where the type is statically known. We don't use isa/dyn_cast and we want to eliminate MCSymbol::Kind in the base class.
1 parent 888d3cd commit b77f51f

File tree

7 files changed

+16
-15
lines changed

7 files changed

+16
-15
lines changed

llvm/include/llvm/MC/MCSymbolXCOFF.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ class MCSymbolXCOFF : public MCSymbol {
2525
MCSymbolXCOFF(const MCSymbolTableEntry *Name, bool isTemporary)
2626
: MCSymbol(SymbolKindXCOFF, Name, isTemporary) {}
2727

28-
static bool classof(const MCSymbol *S) { return S->isXCOFF(); }
29-
3028
enum CodeModel : uint8_t { CM_Small, CM_Large };
3129

3230
static StringRef getUnqualifiedName(StringRef Name) {

llvm/lib/MC/MCAsmStreamer.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,9 +1069,11 @@ void MCAsmStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
10691069

10701070
// Print symbol's rename (original name contains invalid character(s)) if
10711071
// there is one.
1072-
MCSymbolXCOFF *XSym = dyn_cast<MCSymbolXCOFF>(Symbol);
1073-
if (XSym && XSym->hasRename())
1074-
emitXCOFFRenameDirective(XSym, XSym->getSymbolTableName());
1072+
if (getContext().isXCOFF()) {
1073+
auto *XSym = static_cast<MCSymbolXCOFF *>(Symbol);
1074+
if (XSym && XSym->hasRename())
1075+
emitXCOFFRenameDirective(XSym, XSym->getSymbolTableName());
1076+
}
10751077
}
10761078

10771079
void MCAsmStreamer::emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,

llvm/lib/MC/MCParser/AsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1865,7 +1865,7 @@ bool AsmParser::parseStatement(ParseStatementInfo &Info,
18651865
}
18661866

18671867
if (MAI.hasSubsectionsViaSymbols() && CFIStartProcLoc &&
1868-
Sym->isExternal() && !cast<MCSymbolMachO>(Sym)->isAltEntry())
1868+
Sym->isExternal() && !static_cast<MCSymbolMachO *>(Sym)->isAltEntry())
18691869
return Error(StartTokLoc, "non-private labels cannot appear between "
18701870
".cfi_startproc / .cfi_endproc pairs") &&
18711871
Error(*CFIStartProcLoc, "previous .cfi_startproc was here");

llvm/lib/MC/MCXCOFFStreamer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void MCXCOFFStreamer::emitXCOFFRefDirective(const MCSymbol *Symbol) {
109109

110110
void MCXCOFFStreamer::emitXCOFFRenameDirective(const MCSymbol *Name,
111111
StringRef Rename) {
112-
const MCSymbolXCOFF *Symbol = cast<const MCSymbolXCOFF>(Name);
112+
auto *Symbol = static_cast<const MCSymbolXCOFF *>(Name);
113113
if (!Symbol->hasRename())
114114
report_fatal_error("Only explicit .rename is supported for XCOFF.");
115115
}

llvm/lib/MC/XCOFFObjectWriter.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,8 @@ void XCOFFWriter::recordRelocation(const MCFragment &F, const MCFixup &Fixup,
690690
std::tie(Type, SignAndSize) = TargetObjectWriter->getRelocTypeAndSignSize(
691691
Target, Fixup, Fixup.isPCRel());
692692

693-
const MCSectionXCOFF *SymASec = getContainingCsect(cast<MCSymbolXCOFF>(SymA));
693+
const MCSectionXCOFF *SymASec =
694+
getContainingCsect(static_cast<const MCSymbolXCOFF *>(SymA));
694695
assert(SectionMap.contains(SymASec) &&
695696
"Expected containing csect to exist in map.");
696697

@@ -773,13 +774,13 @@ void XCOFFWriter::recordRelocation(const MCFragment &F, const MCFixup &Fixup,
773774
"Expected containing csect to exist in map.");
774775
SectionMap[RelocationSec]->Relocations.push_back(Reloc);
775776

776-
const MCSymbol *const SymB = Target.getSubSym();
777+
auto SymB = static_cast<const MCSymbolXCOFF *>(Target.getSubSym());
777778
if (!SymB)
778779
return;
779780
if (SymA == SymB)
780781
report_fatal_error("relocation for opposite term is not yet supported");
781782

782-
const MCSectionXCOFF *SymBSec = getContainingCsect(cast<MCSymbolXCOFF>(SymB));
783+
const MCSectionXCOFF *SymBSec = getContainingCsect(SymB);
783784
assert(SectionMap.contains(SymBSec) &&
784785
"Expected containing csect to exist in map.");
785786
if (SymASec == SymBSec)

llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class PPCTargetAsmStreamer : public PPCTargetStreamer {
211211
: PPCTargetStreamer(S), OS(OS) {}
212212

213213
void emitTCEntry(const MCSymbol &S, PPCMCExpr::Specifier Kind) override {
214-
if (const MCSymbolXCOFF *XSym = dyn_cast<MCSymbolXCOFF>(&S)) {
214+
if (getContext().isXCOFF()) {
215215
MCSymbolXCOFF *TCSym =
216216
static_cast<const MCSectionXCOFF *>(Streamer.getCurrentSectionOnly())
217217
->getQualNameSymbol();
@@ -225,10 +225,10 @@ class PPCTargetAsmStreamer : public PPCTargetStreamer {
225225
if (Kind == PPC::S_AIX_TLSGD || Kind == PPC::S_AIX_TLSGDM ||
226226
Kind == PPC::S_AIX_TLSIE || Kind == PPC::S_AIX_TLSLE ||
227227
Kind == PPC::S_AIX_TLSLD || Kind == PPC::S_AIX_TLSML)
228-
OS << "\t.tc " << TCSym->getName() << "," << XSym->getName() << "@"
228+
OS << "\t.tc " << TCSym->getName() << "," << S.getName() << "@"
229229
<< getContext().getAsmInfo()->getSpecifierName(Kind) << '\n';
230230
else
231-
OS << "\t.tc " << TCSym->getName() << "," << XSym->getName() << '\n';
231+
OS << "\t.tc " << TCSym->getName() << "," << S.getName() << '\n';
232232

233233
if (TCSym->hasRename())
234234
Streamer.emitXCOFFRenameDirective(TCSym, TCSym->getSymbolTableName());

llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3114,7 +3114,7 @@ bool PPCAIXAsmPrinter::doInitialization(Module &M) {
31143114
setCsectAlignment(&G);
31153115
std::optional<CodeModel::Model> OptionalCodeModel = G.getCodeModel();
31163116
if (OptionalCodeModel)
3117-
setOptionalCodeModel(cast<MCSymbolXCOFF>(getSymbol(&G)),
3117+
setOptionalCodeModel(static_cast<MCSymbolXCOFF *>(getSymbol(&G)),
31183118
*OptionalCodeModel);
31193119
}
31203120

@@ -3141,7 +3141,7 @@ bool PPCAIXAsmPrinter::doInitialization(Module &M) {
31413141
if (GVar) {
31423142
std::optional<CodeModel::Model> OptionalCodeModel = GVar->getCodeModel();
31433143
if (OptionalCodeModel)
3144-
setOptionalCodeModel(cast<MCSymbolXCOFF>(getSymbol(&Alias)),
3144+
setOptionalCodeModel(static_cast<MCSymbolXCOFF *>(getSymbol(&Alias)),
31453145
*OptionalCodeModel);
31463146
}
31473147

0 commit comments

Comments
 (0)