[llvm] dbf12b2 - [MC] Remove MCAsmLayout::{getSymbolOffset, getBaseSymbol}

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 1 11:51:31 PDT 2024


Author: Fangrui Song
Date: 2024-07-01T11:51:26-07:00
New Revision: dbf12b2f778a94bff323bbc4777673f66a1cf3e9

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

LOG: [MC] Remove MCAsmLayout::{getSymbolOffset,getBaseSymbol}

The MCAsmLayout::* forwarders added by
67957a45ee1ec42ae1671cdbfa0d73127346cc95 have all been removed.

Added: 
    

Modified: 
    bolt/lib/Core/BinaryContext.cpp
    bolt/lib/Rewrite/DWARFRewriter.cpp
    llvm/include/llvm/MC/MCAsmLayout.h
    llvm/lib/MC/MCAssembler.cpp
    llvm/lib/MC/MCExpr.cpp
    llvm/lib/MC/MachObjectWriter.cpp
    llvm/lib/MC/WasmObjectWriter.cpp
    llvm/lib/MC/WinCOFFObjectWriter.cpp
    llvm/lib/MC/XCOFFObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/bolt/lib/Core/BinaryContext.cpp b/bolt/lib/Core/BinaryContext.cpp
index db02dc0fae4ee..3bd715d487e0f 100644
--- a/bolt/lib/Core/BinaryContext.cpp
+++ b/bolt/lib/Core/BinaryContext.cpp
@@ -2422,14 +2422,14 @@ BinaryContext::calculateEmittedSize(BinaryFunction &BF, bool FixBranches) {
   // Obtain fragment sizes.
   std::vector<uint64_t> FragmentSizes;
   // Main fragment size.
-  const uint64_t HotSize =
-      Layout.getSymbolOffset(*EndLabel) - Layout.getSymbolOffset(*StartLabel);
+  const uint64_t HotSize = Assembler.getSymbolOffset(*EndLabel) -
+                           Assembler.getSymbolOffset(*StartLabel);
   FragmentSizes.push_back(HotSize);
   // Split fragment sizes.
   uint64_t ColdSize = 0;
   for (const auto &Labels : SplitLabels) {
-    uint64_t Size = Layout.getSymbolOffset(*Labels.second) -
-                    Layout.getSymbolOffset(*Labels.first);
+    uint64_t Size = Assembler.getSymbolOffset(*Labels.second) -
+                    Assembler.getSymbolOffset(*Labels.first);
     FragmentSizes.push_back(Size);
     ColdSize += Size;
   }
@@ -2439,7 +2439,8 @@ BinaryContext::calculateEmittedSize(BinaryFunction &BF, bool FixBranches) {
   for (FunctionFragment &FF : BF.getLayout().fragments()) {
     BinaryBasicBlock *PrevBB = nullptr;
     for (BinaryBasicBlock *BB : FF) {
-      const uint64_t BBStartOffset = Layout.getSymbolOffset(*(BB->getLabel()));
+      const uint64_t BBStartOffset =
+          Assembler.getSymbolOffset(*(BB->getLabel()));
       BB->setOutputStartAddress(BBStartOffset);
       if (PrevBB)
         PrevBB->setOutputEndAddress(BBStartOffset);

diff  --git a/bolt/lib/Rewrite/DWARFRewriter.cpp b/bolt/lib/Rewrite/DWARFRewriter.cpp
index 0e475031eae4f..110f53f38ccb2 100644
--- a/bolt/lib/Rewrite/DWARFRewriter.cpp
+++ b/bolt/lib/Rewrite/DWARFRewriter.cpp
@@ -30,6 +30,7 @@
 #include "llvm/DebugInfo/DWARF/DWARFUnit.h"
 #include "llvm/MC/MCAsmBackend.h"
 #include "llvm/MC/MCAsmLayout.h"
+#include "llvm/MC/MCAssembler.h"
 #include "llvm/MC/MCObjectWriter.h"
 #include "llvm/MC/MCStreamer.h"
 #include "llvm/Object/ObjectFile.h"
@@ -1392,7 +1393,8 @@ void DWARFRewriter::updateLineTableOffsets(const MCAsmLayout &Layout) {
     if (!StmtOffset)
       continue;
 
-    const uint64_t LineTableOffset = Layout.getSymbolOffset(*Label);
+    const uint64_t LineTableOffset =
+        Layout.getAssembler().getSymbolOffset(*Label);
     DebugLineOffsetMap[*StmtOffset] = LineTableOffset;
     assert(DbgInfoSection && ".debug_info section must exist");
     LineTablePatchMap[CU.get()] = LineTableOffset;

diff  --git a/llvm/include/llvm/MC/MCAsmLayout.h b/llvm/include/llvm/MC/MCAsmLayout.h
index 490908dff3302..50b0a26d958d6 100644
--- a/llvm/include/llvm/MC/MCAsmLayout.h
+++ b/llvm/include/llvm/MC/MCAsmLayout.h
@@ -14,9 +14,7 @@
 
 namespace llvm {
 class MCAssembler;
-class MCFragment;
 class MCSection;
-class MCSymbol;
 
 /// Encapsulates the layout of an assembly file at a particular point in time.
 ///
@@ -45,22 +43,6 @@ class MCAsmLayout {
   const llvm::SmallVectorImpl<MCSection *> &getSectionOrder() const {
     return SectionOrder;
   }
-
-  /// @}
-  /// \name Fragment Layout Data
-  /// @{
-
-  /// @}
-  /// \name Utility Functions
-  /// @{
-
-  /// Variant that reports a fatal error if the offset is not computable.
-  uint64_t getSymbolOffset(const MCSymbol &S) const;
-
-  /// If this symbol is equivalent to A + Constant, return A.
-  const MCSymbol *getBaseSymbol(const MCSymbol &Symbol) const;
-
-  /// @}
 };
 
 } // end namespace llvm

diff  --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index b16df78afa333..5f3f779a8da9d 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -554,10 +554,6 @@ uint64_t MCAssembler::getSymbolOffset(const MCSymbol &S) const {
   return Val;
 }
 
-uint64_t MCAsmLayout::getSymbolOffset(const MCSymbol &S) const {
-  return Assembler.getSymbolOffset(S);
-}
-
 const MCSymbol *MCAssembler::getBaseSymbol(const MCSymbol &Symbol) const {
   assert(Layout);
   if (!Symbol.isVariable())
@@ -594,9 +590,6 @@ const MCSymbol *MCAssembler::getBaseSymbol(const MCSymbol &Symbol) const {
 
   return &ASym;
 }
-const MCSymbol *MCAsmLayout::getBaseSymbol(const MCSymbol &Symbol) const {
-  return Assembler.getBaseSymbol(Symbol);
-}
 
 uint64_t MCAssembler::getSectionAddressSize(const MCSection &Sec) const {
   // The size is the last fragment's end offset.

diff  --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp
index e2af92e30e4bf..af9dcffdfdb29 100644
--- a/llvm/lib/MC/MCExpr.cpp
+++ b/llvm/lib/MC/MCExpr.cpp
@@ -646,8 +646,8 @@ static void AttemptToFoldSymbolOffsetDifference(
     }
 
     // Eagerly evaluate when layout is finalized.
-    Addend += Layout->getSymbolOffset(A->getSymbol()) -
-              Layout->getSymbolOffset(B->getSymbol());
+    Addend += Asm->getSymbolOffset(A->getSymbol()) -
+              Asm->getSymbolOffset(B->getSymbol());
     if (Addrs && (&SecA != &SecB))
       Addend += (Addrs->lookup(&SecA) - Addrs->lookup(&SecB));
 

diff  --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 4178cf705f1ce..e5adf1c3dc611 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -118,7 +118,7 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
   }
 
   return getSectionAddress(S.getFragment()->getParent()) +
-         Layout.getSymbolOffset(S);
+         Layout.getAssembler().getSymbolOffset(S);
 }
 
 uint64_t MachObjectWriter::getPaddingSize(const MCAssembler &Asm,

diff  --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp
index 63bce850a2a93..5602c9b406f13 100644
--- a/llvm/lib/MC/WasmObjectWriter.cpp
+++ b/llvm/lib/MC/WasmObjectWriter.cpp
@@ -350,8 +350,8 @@ class WasmObjectWriter : public MCObjectWriter {
                           const MCAssembler &Asm, const MCAsmLayout &Layout);
   void writeCustomRelocSections();
 
-  uint64_t getProvisionalValue(const WasmRelocationEntry &RelEntry,
-                               const MCAsmLayout &Layout);
+  uint64_t getProvisionalValue(const MCAssembler &Asm,
+                               const WasmRelocationEntry &RelEntry);
   void applyRelocations(ArrayRef<WasmRelocationEntry> Relocations,
                         uint64_t ContentsOffset, const MCAsmLayout &Layout);
 
@@ -638,8 +638,8 @@ void WasmObjectWriter::recordRelocation(MCAssembler &Asm,
 // to make the object format more readable and more likely to be directly
 // useable.
 uint64_t
-WasmObjectWriter::getProvisionalValue(const WasmRelocationEntry &RelEntry,
-                                      const MCAsmLayout &Layout) {
+WasmObjectWriter::getProvisionalValue(const MCAssembler &Asm,
+                                      const WasmRelocationEntry &RelEntry) {
   if ((RelEntry.Type == wasm::R_WASM_GLOBAL_INDEX_LEB ||
        RelEntry.Type == wasm::R_WASM_GLOBAL_INDEX_I32) &&
       !RelEntry.Symbol->isGlobal()) {
@@ -656,7 +656,7 @@ WasmObjectWriter::getProvisionalValue(const WasmRelocationEntry &RelEntry,
   case wasm::R_WASM_TABLE_INDEX_I64: {
     // Provisional value is table address of the resolved symbol itself
     const MCSymbolWasm *Base =
-        cast<MCSymbolWasm>(Layout.getBaseSymbol(*RelEntry.Symbol));
+        cast<MCSymbolWasm>(Asm.getBaseSymbol(*RelEntry.Symbol));
     assert(Base->isFunction());
     if (RelEntry.Type == wasm::R_WASM_TABLE_INDEX_REL_SLEB ||
         RelEntry.Type == wasm::R_WASM_TABLE_INDEX_REL_SLEB64)
@@ -772,7 +772,7 @@ void WasmObjectWriter::applyRelocations(
                       RelEntry.Offset;
 
     LLVM_DEBUG(dbgs() << "applyRelocation: " << RelEntry << "\n");
-    uint64_t Value = getProvisionalValue(RelEntry, Layout);
+    uint64_t Value = getProvisionalValue(Layout.getAssembler(), RelEntry);
 
     switch (RelEntry.Type) {
     case wasm::R_WASM_FUNCTION_INDEX_LEB:
@@ -1353,7 +1353,7 @@ void WasmObjectWriter::prepareImports(
     // Register types for all functions, including those with private linkage
     // (because wasm always needs a type signature).
     if (WS.isFunction()) {
-      const auto *BS = Layout.getBaseSymbol(S);
+      const auto *BS = Asm.getBaseSymbol(S);
       if (!BS)
         report_fatal_error(Twine(S.getName()) +
                            ": absolute addressing not supported!");
@@ -1727,7 +1727,7 @@ uint64_t WasmObjectWriter::writeOneObject(MCAssembler &Asm,
 
       assert(S.isDefined());
 
-      const auto *BS = Layout.getBaseSymbol(S);
+      const auto *BS = Asm.getBaseSymbol(S);
       if (!BS)
         report_fatal_error(Twine(S.getName()) +
                            ": absolute addressing not supported!");
@@ -1830,7 +1830,7 @@ uint64_t WasmObjectWriter::writeOneObject(MCAssembler &Asm,
         return;
       assert(Rel.Symbol->isFunction());
       const MCSymbolWasm *Base =
-          cast<MCSymbolWasm>(Layout.getBaseSymbol(*Rel.Symbol));
+          cast<MCSymbolWasm>(Asm.getBaseSymbol(*Rel.Symbol));
       uint32_t FunctionIndex = WasmIndices.find(Base)->second;
       uint32_t TableIndex = TableElems.size() + InitialTableOffset;
       if (TableIndices.try_emplace(Base, TableIndex).second) {

diff  --git a/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp
index f25d9f245a8e1..cd209857c9038 100644
--- a/llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/WinCOFFObjectWriter.cpp
@@ -175,8 +175,7 @@ class WinCOFFWriter {
   void defineSection(const MCAssembler &Asm, MCSectionCOFF const &Sec);
 
   COFFSymbol *getLinkedSymbol(const MCSymbol &Symbol);
-  void DefineSymbol(const MCSymbol &Symbol, MCAssembler &Assembler,
-                    const MCAsmLayout &Layout);
+  void defineSymbol(const MCAssembler &Asm, const MCSymbol &Symbol);
 
   void SetSymbolName(COFFSymbol &S);
   void SetSectionName(COFFSection &S);
@@ -395,9 +394,9 @@ COFFSymbol *WinCOFFWriter::getLinkedSymbol(const MCSymbol &Symbol) {
 
 /// This function takes a symbol data object from the assembler
 /// and creates the associated COFF symbol staging object.
-void WinCOFFWriter::DefineSymbol(const MCSymbol &MCSym, MCAssembler &Assembler,
-                                 const MCAsmLayout &Layout) {
-  const MCSymbol *Base = Layout.getBaseSymbol(MCSym);
+void WinCOFFWriter::defineSymbol(const MCAssembler &Asm,
+                                 const MCSymbol &MCSym) {
+  const MCSymbol *Base = Asm.getBaseSymbol(MCSym);
   COFFSection *Sec = nullptr;
   MCSectionCOFF *MCSec = nullptr;
   if (Base && Base->getFragment()) {
@@ -444,7 +443,7 @@ void WinCOFFWriter::DefineSymbol(const MCSymbol &MCSym, MCAssembler &Assembler,
   }
 
   if (Local) {
-    Local->Data.Value = getSymbolValue(MCSym, Assembler);
+    Local->Data.Value = getSymbolValue(MCSym, Asm);
 
     const MCSymbolCOFF &SymbolCOFF = cast<MCSymbolCOFF>(MCSym);
     Local->Data.Type = SymbolCOFF.getType();
@@ -834,7 +833,6 @@ void WinCOFFWriter::reset() {
 }
 
 void WinCOFFWriter::executePostLayoutBinding(MCAssembler &Asm) {
-  auto &Layout = *Asm.getLayout();
   // "Define" each section & symbol. This creates section & symbol
   // entries in the staging area.
   for (const auto &Section : Asm) {
@@ -849,7 +847,7 @@ void WinCOFFWriter::executePostLayoutBinding(MCAssembler &Asm) {
       // Define non-temporary or temporary static (private-linkage) symbols
       if (!Symbol.isTemporary() ||
           cast<MCSymbolCOFF>(Symbol).getClass() == COFF::IMAGE_SYM_CLASS_STATIC)
-        DefineSymbol(Symbol, Asm, Layout);
+        defineSymbol(Asm, Symbol);
 }
 
 void WinCOFFWriter::recordRelocation(MCAssembler &Asm,

diff  --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp
index 0ea7ccc0660af..bce9ebd755074 100644
--- a/llvm/lib/MC/XCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -1491,7 +1491,7 @@ void XCOFFObjectWriter::assignAddressesAndIndices(MCAssembler &Asm,
           if (Entry != ExceptionSection.ExceptionTable.end()) {
             hasExceptEntry = true;
             for (auto &TrapEntry : Entry->second.Entries) {
-              TrapEntry.TrapAddress = Layout.getSymbolOffset(*(Sym.MCSym)) +
+              TrapEntry.TrapAddress = Asm.getSymbolOffset(*(Sym.MCSym)) +
                                       TrapEntry.Trap->getOffset();
             }
           }


        


More information about the llvm-commits mailing list