[llvm] 2d4ecba - MCSymbolMachO: Remove classof

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 3 18:59:39 PDT 2025


Author: Fangrui Song
Date: 2025-08-03T18:59:35-07:00
New Revision: 2d4ecba957a6cd3b5228e0773ec2d52d8bc5c505

URL: https://github.com/llvm/llvm-project/commit/2d4ecba957a6cd3b5228e0773ec2d52d8bc5c505
DIFF: https://github.com/llvm/llvm-project/commit/2d4ecba957a6cd3b5228e0773ec2d52d8bc5c505.diff

LOG: MCSymbolMachO: 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.

Added: 
    

Modified: 
    llvm/include/llvm/MC/MCSymbol.h
    llvm/include/llvm/MC/MCSymbolMachO.h
    llvm/lib/MC/MCMachOStreamer.cpp
    llvm/lib/MC/MachObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/MC/MCSymbol.h b/llvm/include/llvm/MC/MCSymbol.h
index ccd37c3ede2d9..cb9f26136b1fb 100644
--- a/llvm/include/llvm/MC/MCSymbol.h
+++ b/llvm/include/llvm/MC/MCSymbol.h
@@ -281,16 +281,6 @@ class MCSymbol {
   /// Mark the symbol as undefined.
   void setUndefined() { Fragment = nullptr; }
 
-  bool isCOFF() const { return Kind == SymbolKindCOFF; }
-
-  bool isGOFF() const { return Kind == SymbolKindGOFF; }
-
-  bool isMachO() const { return Kind == SymbolKindMachO; }
-
-  bool isWasm() const { return Kind == SymbolKindWasm; }
-
-  bool isXCOFF() const { return Kind == SymbolKindXCOFF; }
-
   /// @}
   /// \name Variable Symbols
   /// @{

diff  --git a/llvm/include/llvm/MC/MCSymbolMachO.h b/llvm/include/llvm/MC/MCSymbolMachO.h
index 97c9abfcf5f2c..c5c51fee64137 100644
--- a/llvm/include/llvm/MC/MCSymbolMachO.h
+++ b/llvm/include/llvm/MC/MCSymbolMachO.h
@@ -149,8 +149,6 @@ class MCSymbolMachO : public MCSymbol {
 
     return Flags;
   }
-
-  static bool classof(const MCSymbol *S) { return S->isMachO(); }
 };
 }
 

diff  --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index c850ed9fec26b..6226b02a0615b 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/lib/MC/MCMachOStreamer.cpp
@@ -160,7 +160,7 @@ void MCMachOStreamer::emitEHSymAttributes(const MCSymbol *Symbol,
 void MCMachOStreamer::emitLabel(MCSymbol *Symbol, SMLoc Loc) {
   // We have to create a new fragment if this is an atom defining symbol,
   // fragments cannot span atoms.
-  if (cast<MCSymbolMachO>(Symbol)->isSymbolLinkerVisible())
+  if (static_cast<MCSymbolMachO *>(Symbol)->isSymbolLinkerVisible())
     newFragment();
 
   MCObjectStreamer::emitLabel(Symbol, Loc);

diff  --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index bcdc0012ebf98..eb59e39d73eda 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -589,7 +589,7 @@ void MachObjectWriter::computeSymbolTable(
 
   // Build the string table.
   for (const MCSymbol &Symbol : Asm.symbols()) {
-    if (!cast<MCSymbolMachO>(Symbol).isSymbolLinkerVisible())
+    if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
       continue;
 
     StringTable.add(Symbol.getName());
@@ -603,7 +603,7 @@ void MachObjectWriter::computeSymbolTable(
   // important for letting us 
diff  .o files.
   for (const MCSymbol &Symbol : Asm.symbols()) {
     // Ignore non-linker visible symbols.
-    if (!cast<MCSymbolMachO>(Symbol).isSymbolLinkerVisible())
+    if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
       continue;
 
     if (!Symbol.isExternal() && !Symbol.isUndefined())
@@ -629,7 +629,7 @@ void MachObjectWriter::computeSymbolTable(
   // Now add the data for local symbols.
   for (const MCSymbol &Symbol : Asm.symbols()) {
     // Ignore non-linker visible symbols.
-    if (!cast<MCSymbolMachO>(Symbol).isSymbolLinkerVisible())
+    if (!static_cast<const MCSymbolMachO &>(Symbol).isSymbolLinkerVisible())
       continue;
 
     if (Symbol.isExternal() || Symbol.isUndefined())


        


More information about the llvm-commits mailing list