[llvm] 7ff0cf6 - MCObjectWriter: Remove the MCAssembler argument from writeObject

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat May 24 12:55:57 PDT 2025


Author: Fangrui Song
Date: 2025-05-24T12:55:52-07:00
New Revision: 7ff0cf6138f30db4f361a20eda7d18692337d351

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

LOG: MCObjectWriter: Remove the MCAssembler argument from writeObject

Added: 
    

Modified: 
    llvm/include/llvm/MC/MCDXContainerWriter.h
    llvm/include/llvm/MC/MCELFObjectWriter.h
    llvm/include/llvm/MC/MCMachObjectWriter.h
    llvm/include/llvm/MC/MCObjectWriter.h
    llvm/include/llvm/MC/MCSPIRVObjectWriter.h
    llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
    llvm/lib/MC/ELFObjectWriter.cpp
    llvm/lib/MC/GOFFObjectWriter.cpp
    llvm/lib/MC/MCAssembler.cpp
    llvm/lib/MC/MCDXContainerWriter.cpp
    llvm/lib/MC/MachObjectWriter.cpp
    llvm/lib/MC/SPIRVObjectWriter.cpp
    llvm/lib/MC/WasmObjectWriter.cpp
    llvm/lib/MC/WinCOFFObjectWriter.cpp
    llvm/lib/MC/XCOFFObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/MC/MCDXContainerWriter.h b/llvm/include/llvm/MC/MCDXContainerWriter.h
index 5822ced4e0929..44d2af3e8a766 100644
--- a/llvm/include/llvm/MC/MCDXContainerWriter.h
+++ b/llvm/include/llvm/MC/MCDXContainerWriter.h
@@ -42,7 +42,7 @@ class DXContainerObjectWriter final : public MCObjectWriter {
                           raw_pwrite_stream &OS)
       : W(OS, llvm::endianness::little), TargetObjectWriter(std::move(MOTW)) {}
 
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
 };
 } // end namespace llvm
 

diff  --git a/llvm/include/llvm/MC/MCELFObjectWriter.h b/llvm/include/llvm/MC/MCELFObjectWriter.h
index c9243f71cb275..5a83beccffab9 100644
--- a/llvm/include/llvm/MC/MCELFObjectWriter.h
+++ b/llvm/include/llvm/MC/MCELFObjectWriter.h
@@ -175,7 +175,7 @@ class ELFObjectWriter final : public MCObjectWriter {
   bool isSymbolRefDifferenceFullyResolvedImpl(const MCSymbol &SymA,
                                               const MCFragment &FB, bool InSet,
                                               bool IsPCRel) const override;
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
 
   bool hasRelocationAddend() const;
   bool usesRela(const MCTargetOptions *TO, const MCSectionELF &Sec) const;

diff  --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h
index 9c2d189284f85..2dbe2e619324b 100644
--- a/llvm/include/llvm/MC/MCMachObjectWriter.h
+++ b/llvm/include/llvm/MC/MCMachObjectWriter.h
@@ -348,7 +348,7 @@ class MachObjectWriter final : public MCObjectWriter {
 
   void populateAddrSigSection(MCAssembler &Asm);
 
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
 };
 } // end namespace llvm
 

diff  --git a/llvm/include/llvm/MC/MCObjectWriter.h b/llvm/include/llvm/MC/MCObjectWriter.h
index 23794226f8761..71dfa41211530 100644
--- a/llvm/include/llvm/MC/MCObjectWriter.h
+++ b/llvm/include/llvm/MC/MCObjectWriter.h
@@ -125,7 +125,7 @@ class MCObjectWriter {
   /// This routine is called by the assembler after layout and relaxation is
   /// complete, fixups have been evaluated and applied, and relocations
   /// generated.
-  virtual uint64_t writeObject(MCAssembler &Asm) = 0;
+  virtual uint64_t writeObject() = 0;
 
   /// @}
 };

diff  --git a/llvm/include/llvm/MC/MCSPIRVObjectWriter.h b/llvm/include/llvm/MC/MCSPIRVObjectWriter.h
index 4fc205f96ce52..698f4f19386c5 100644
--- a/llvm/include/llvm/MC/MCSPIRVObjectWriter.h
+++ b/llvm/include/llvm/MC/MCSPIRVObjectWriter.h
@@ -46,7 +46,7 @@ class SPIRVObjectWriter final : public MCObjectWriter {
   void setBuildVersion(unsigned Major, unsigned Minor, unsigned Bound);
 
 private:
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
   void writeHeader(const MCAssembler &Asm);
 };
 

diff  --git a/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h b/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
index 5df93bc889d03..38161532a9f56 100644
--- a/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
+++ b/llvm/include/llvm/MC/MCWinCOFFObjectWriter.h
@@ -69,7 +69,7 @@ class WinCOFFObjectWriter final : public MCObjectWriter {
                                               bool IsPCRel) const override;
   void recordRelocation(const MCFragment &F, const MCFixup &Fixup,
                         MCValue Target, uint64_t &FixedValue) override;
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
   int getSectionNumber(const MCSection &Section) const;
 };
 

diff  --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 0fed3875cf6bb..4e73b11b97306 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -211,7 +211,7 @@ struct ELFWriter {
 
   void writeRelocations(const MCSectionELF &Sec);
 
-  uint64_t writeObject(MCAssembler &Asm);
+  uint64_t writeObject();
   void writeSectionHeader(uint32_t GroupSymbolIndex, uint64_t Offset,
                           uint64_t Size, const MCSectionELF &Section);
 };
@@ -1017,7 +1017,7 @@ void ELFWriter::writeSectionHeaders(const MCAssembler &Asm) {
   stats::SectionHeaderBytes += W.OS.tell() - Start;
 }
 
-uint64_t ELFWriter::writeObject(MCAssembler &Asm) {
+uint64_t ELFWriter::writeObject() {
   uint64_t StartOffset = W.OS.tell();
 
   MCContext &Ctx = getContext();
@@ -1426,13 +1426,13 @@ bool ELFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
   return &SymA.getSection() == FB.getParent();
 }
 
-uint64_t ELFObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t ELFObjectWriter::writeObject() {
   uint64_t Size =
-      ELFWriter(Asm, *this, OS, IsLittleEndian,
+      ELFWriter(*Asm, *this, OS, IsLittleEndian,
                 DwoOS ? ELFWriter::NonDwoOnly : ELFWriter::AllSections)
-          .writeObject(Asm);
+          .writeObject();
   if (DwoOS)
-    Size += ELFWriter(Asm, *this, *DwoOS, IsLittleEndian, ELFWriter::DwoOnly)
-                .writeObject(Asm);
+    Size += ELFWriter(*Asm, *this, *DwoOS, IsLittleEndian, ELFWriter::DwoOnly)
+                .writeObject();
   return Size;
 }

diff  --git a/llvm/lib/MC/GOFFObjectWriter.cpp b/llvm/lib/MC/GOFFObjectWriter.cpp
index 00b4692fbc782..c17b2ed8101dc 100644
--- a/llvm/lib/MC/GOFFObjectWriter.cpp
+++ b/llvm/lib/MC/GOFFObjectWriter.cpp
@@ -245,7 +245,7 @@ class GOFFObjectWriter : public MCObjectWriter {
   // Implementation of the MCObjectWriter interface.
   void recordRelocation(const MCFragment &F, const MCFixup &Fixup,
                         MCValue Target, uint64_t &FixedValue) override {}
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
 };
 } // end anonymous namespace
 
@@ -281,7 +281,7 @@ void GOFFObjectWriter::writeEnd() {
   OS.writebe<uint32_t>(ESDID); // ESDID (of entry point)
 }
 
-uint64_t GOFFObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t GOFFObjectWriter::writeObject() {
   writeHeader();
   writeEnd();
 

diff  --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index d873a61c854ce..d687f2b5ac022 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -978,7 +978,7 @@ void MCAssembler::Finish() {
   layout();
 
   // Write the object file.
-  stats::ObjectBytes += getWriter().writeObject(*this);
+  stats::ObjectBytes += getWriter().writeObject();
 
   HasLayout = false;
 }

diff  --git a/llvm/lib/MC/MCDXContainerWriter.cpp b/llvm/lib/MC/MCDXContainerWriter.cpp
index 2e6379b5feb0d..5eda039853ca8 100644
--- a/llvm/lib/MC/MCDXContainerWriter.cpp
+++ b/llvm/lib/MC/MCDXContainerWriter.cpp
@@ -18,7 +18,8 @@ using namespace llvm;
 
 MCDXContainerTargetWriter::~MCDXContainerTargetWriter() {}
 
-uint64_t DXContainerObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t DXContainerObjectWriter::writeObject() {
+  auto &Asm = *this->Asm;
   // Start the file size as the header plus the size of the part offsets.
   // Presently DXContainer files usually contain 7-10 parts. Reserving space for
   // 16 part offsets gives us a little room for growth.

diff  --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 3050372257e66..76194e275d27e 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -789,7 +789,8 @@ void MachObjectWriter::populateAddrSigSection(MCAssembler &Asm) {
   }
 }
 
-uint64_t MachObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t MachObjectWriter::writeObject() {
+  auto &Asm = *this->Asm;
   uint64_t StartOffset = W.OS.tell();
   auto NumBytesWritten = [&] { return W.OS.tell() - StartOffset; };
 

diff  --git a/llvm/lib/MC/SPIRVObjectWriter.cpp b/llvm/lib/MC/SPIRVObjectWriter.cpp
index ef3d4b029e43e..5e3713778286f 100644
--- a/llvm/lib/MC/SPIRVObjectWriter.cpp
+++ b/llvm/lib/MC/SPIRVObjectWriter.cpp
@@ -35,11 +35,11 @@ void SPIRVObjectWriter::setBuildVersion(unsigned Major, unsigned Minor,
   VersionInfo.Bound = Bound;
 }
 
-uint64_t SPIRVObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t SPIRVObjectWriter::writeObject() {
   uint64_t StartOffset = W.OS.tell();
-  writeHeader(Asm);
-  for (const MCSection &S : Asm)
-    Asm.writeSectionData(W.OS, &S);
+  writeHeader(*Asm);
+  for (const MCSection &S : *Asm)
+    Asm->writeSectionData(W.OS, &S);
   return W.OS.tell() - StartOffset;
 }
 

diff  --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp
index d0e1853e8a89b..4680408dae0c5 100644
--- a/llvm/lib/MC/WasmObjectWriter.cpp
+++ b/llvm/lib/MC/WasmObjectWriter.cpp
@@ -298,7 +298,7 @@ class WasmObjectWriter : public MCObjectWriter {
   void executePostLayoutBinding() override;
   void prepareImports(SmallVectorImpl<wasm::WasmImport> &Imports,
                       MCAssembler &Asm);
-  uint64_t writeObject(MCAssembler &Asm) override;
+  uint64_t writeObject() override;
 
   uint64_t writeOneObject(MCAssembler &Asm, DwoMode Mode);
 
@@ -1433,17 +1433,17 @@ void WasmObjectWriter::prepareImports(
   }
 }
 
-uint64_t WasmObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t WasmObjectWriter::writeObject() {
   support::endian::Writer MainWriter(*OS, llvm::endianness::little);
   W = &MainWriter;
   if (IsSplitDwarf) {
-    uint64_t TotalSize = writeOneObject(Asm, DwoMode::NonDwoOnly);
+    uint64_t TotalSize = writeOneObject(*Asm, DwoMode::NonDwoOnly);
     assert(DwoOS);
     support::endian::Writer DwoWriter(*DwoOS, llvm::endianness::little);
     W = &DwoWriter;
-    return TotalSize + writeOneObject(Asm, DwoMode::DwoOnly);
+    return TotalSize + writeOneObject(*Asm, DwoMode::DwoOnly);
   } else {
-    return writeOneObject(Asm, DwoMode::AllSections);
+    return writeOneObject(*Asm, DwoMode::AllSections);
   }
 }
 

diff  --git a/llvm/lib/MC/WinCOFFObjectWriter.cpp b/llvm/lib/MC/WinCOFFObjectWriter.cpp
index e2a386e5c62ec..7cd6efd2262bc 100644
--- a/llvm/lib/MC/WinCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/WinCOFFObjectWriter.cpp
@@ -1198,15 +1198,15 @@ void WinCOFFObjectWriter::recordRelocation(const MCFragment &F,
   ObjWriter->recordRelocation(*Asm, F, Fixup, Target, FixedValue);
 }
 
-uint64_t WinCOFFObjectWriter::writeObject(MCAssembler &Asm) {
+uint64_t WinCOFFObjectWriter::writeObject() {
   // If the assember had an error, then layout will not have completed, so we
   // cannot write an object file.
   if (getContext().hadError())
     return 0;
 
-  uint64_t TotalSize = ObjWriter->writeObject(Asm);
+  uint64_t TotalSize = ObjWriter->writeObject(*Asm);
   if (DwoWriter)
-    TotalSize += DwoWriter->writeObject(Asm);
+    TotalSize += DwoWriter->writeObject(*Asm);
   return TotalSize;
 }
 

diff  --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp
index f429db3706e39..ddb2ca8a03e2e 100644
--- a/llvm/lib/MC/XCOFFObjectWriter.cpp
+++ b/llvm/lib/MC/XCOFFObjectWriter.cpp
@@ -353,7 +353,7 @@ class XCOFFWriter final : public XCOFFObjectWriter {
   void recordRelocation(const MCFragment &, const MCFixup &, MCValue,
                         uint64_t &) override;
 
-  uint64_t writeObject(MCAssembler &) override;
+  uint64_t writeObject() override;
 
   bool is64Bit() const { return TargetObjectWriter->is64Bit(); }
   bool nameShouldBeInStringTable(const StringRef &);
@@ -818,7 +818,7 @@ void XCOFFWriter::writeSections(const MCAssembler &Asm) {
                                       CurrentAddressLocation);
 }
 
-uint64_t XCOFFWriter::writeObject(MCAssembler &Asm) {
+uint64_t XCOFFWriter::writeObject() {
   // We always emit a timestamp of 0 for reproducibility, so ensure incremental
   // linking is not enabled, in case, like with Windows COFF, such a timestamp
   // is incompatible with incremental linking of XCOFF.
@@ -829,9 +829,9 @@ uint64_t XCOFFWriter::writeObject(MCAssembler &Asm) {
   writeFileHeader();
   writeAuxFileHeader();
   writeSectionHeaderTable();
-  writeSections(Asm);
+  writeSections(*Asm);
   writeRelocations();
-  writeSymbolTable(Asm);
+  writeSymbolTable(*Asm);
   // Write the string table.
   Strings.write(W.OS);
 


        


More information about the llvm-commits mailing list