[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