[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