[llvm] 8f7887a - [MC] Remove the MCAsmLayout parameter from MCAsmBackend::relax*
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 1 14:36:30 PDT 2024
Author: Fangrui Song
Date: 2024-07-01T14:36:25-07:00
New Revision: 8f7887ad5347f23bac008dad4bfdbab1af5815f7
URL: https://github.com/llvm/llvm-project/commit/8f7887ad5347f23bac008dad4bfdbab1af5815f7
DIFF: https://github.com/llvm/llvm-project/commit/8f7887ad5347f23bac008dad4bfdbab1af5815f7.diff
LOG: [MC] Remove the MCAsmLayout parameter from MCAsmBackend::relax*
finishLayout is now the only member function that has a MCAsmLayout
parameter.
Added:
Modified:
llvm/include/llvm/MC/MCAsmBackend.h
llvm/lib/MC/MCAssembler.cpp
llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
Removed:
################################################################################
diff --git a/llvm/include/llvm/MC/MCAsmBackend.h b/llvm/include/llvm/MC/MCAsmBackend.h
index 3d81c39bfc777..7841e8aac2542 100644
--- a/llvm/include/llvm/MC/MCAsmBackend.h
+++ b/llvm/include/llvm/MC/MCAsmBackend.h
@@ -178,12 +178,14 @@ class MCAsmBackend {
virtual void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const {};
- virtual bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
- MCAsmLayout &Layout, bool &WasRelaxed) const {
+ virtual bool relaxDwarfLineAddr(const MCAssembler &Asm,
+ MCDwarfLineAddrFragment &DF,
+ bool &WasRelaxed) const {
return false;
}
- virtual bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
+ virtual bool relaxDwarfCFA(const MCAssembler &Asm,
+ MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
return false;
}
@@ -191,7 +193,7 @@ class MCAsmBackend {
// Defined by linker relaxation targets to possibly emit LEB128 relocations
// and set Value at the relocated location.
virtual std::pair<bool, bool>
- relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout, int64_t &Value) const {
+ relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF, int64_t &Value) const {
return std::make_pair(false, false);
}
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 475146101f067..53bebdcd0447c 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -1154,8 +1154,7 @@ bool MCAssembler::relaxLEB(MCLEBFragment &LF) {
: LF.getValue().evaluateAsAbsolute(Value, *Layout);
if (!Abs) {
bool Relaxed, UseZeroPad;
- std::tie(Relaxed, UseZeroPad) =
- getBackend().relaxLEB128(LF, *Layout, Value);
+ std::tie(Relaxed, UseZeroPad) = getBackend().relaxLEB128(*this, LF, Value);
if (!Relaxed) {
getContext().reportError(LF.getValue().getLoc(),
Twine(LF.isSigned() ? ".s" : ".u") +
@@ -1242,9 +1241,8 @@ bool MCAssembler::relaxBoundaryAlign(MCBoundaryAlignFragment &BF) {
}
bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
-
bool WasRelaxed;
- if (getBackend().relaxDwarfLineAddr(DF, *Layout, WasRelaxed))
+ if (getBackend().relaxDwarfLineAddr(*this, DF, WasRelaxed))
return WasRelaxed;
MCContext &Context = getContext();
@@ -1266,7 +1264,7 @@ bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
bool MCAssembler::relaxDwarfCallFrameFragment(MCDwarfCallFrameFragment &DF) {
bool WasRelaxed;
- if (getBackend().relaxDwarfCFA(DF, *Layout, WasRelaxed))
+ if (getBackend().relaxDwarfCFA(*this, DF, WasRelaxed))
return WasRelaxed;
MCContext &Context = getContext();
diff --git a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
index a3bb229ef0527..e3200b04c673a 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
@@ -299,21 +299,22 @@ getRelocPairForSize(unsigned Size) {
}
}
-std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(MCLEBFragment &LF,
- MCAsmLayout &Layout,
+std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(const MCAssembler &Asm,
+ MCLEBFragment &LF,
int64_t &Value) const {
const MCExpr &Expr = LF.getValue();
- if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, Layout))
+ if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, *Asm.getLayout()))
return std::make_pair(false, false);
LF.getFixups().push_back(
MCFixup::create(0, &Expr, FK_Data_leb128, Expr.getLoc()));
return std::make_pair(true, true);
}
-bool LoongArchAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
- MCAsmLayout &Layout,
+bool LoongArchAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
+ MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const {
- MCContext &C = Layout.getAssembler().getContext();
+ auto &Layout = *Asm.getLayout();
+ MCContext &C = Asm.getContext();
int64_t LineDelta = DF.getLineDelta();
const MCExpr &AddrDelta = DF.getAddrDelta();
@@ -378,14 +379,15 @@ bool LoongArchAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
return true;
}
-bool LoongArchAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
- MCAsmLayout &Layout,
+bool LoongArchAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
+ MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
const MCExpr &AddrDelta = DF.getAddrDelta();
SmallVectorImpl<char> &Data = DF.getContents();
SmallVectorImpl<MCFixup> &Fixups = DF.getFixups();
size_t OldSize = Data.size();
+ auto &Layout = *Asm.getLayout();
int64_t Value;
if (AddrDelta.evaluateAsAbsolute(Value, Layout))
return false;
diff --git a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
index 8bfc7b5b422b9..9df4ff22625c6 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
@@ -71,12 +71,12 @@ class LoongArchAsmBackend : public MCAsmBackend {
void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const override {}
- std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout,
+ std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
int64_t &Value) const override;
- bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF, MCAsmLayout &Layout,
+ bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const override;
- bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
+ bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const override;
bool writeNopData(raw_ostream &OS, uint64_t Count,
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index 825ac797043d8..445e5892b598d 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
@@ -202,10 +202,10 @@ void RISCVAsmBackend::relaxInstruction(MCInst &Inst,
Inst = std::move(Res);
}
-bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
- MCAsmLayout &Layout,
+bool RISCVAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
+ MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const {
- MCContext &C = Layout.getAssembler().getContext();
+ MCContext &C = Asm.getContext();
int64_t LineDelta = DF.getLineDelta();
const MCExpr &AddrDelta = DF.getAddrDelta();
@@ -215,7 +215,7 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
int64_t Value;
[[maybe_unused]] bool IsAbsolute =
- AddrDelta.evaluateKnownAbsolute(Value, Layout);
+ AddrDelta.evaluateKnownAbsolute(Value, *Asm.getLayout());
assert(IsAbsolute && "CFA with invalid expression");
Data.clear();
@@ -268,9 +268,10 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
return true;
}
-bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
- MCAsmLayout &Layout,
+bool RISCVAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
+ MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
+ auto &Layout = *Asm.getLayout();
const MCExpr &AddrDelta = DF.getAddrDelta();
SmallVectorImpl<char> &Data = DF.getContents();
SmallVectorImpl<MCFixup> &Fixups = DF.getFixups();
@@ -287,10 +288,8 @@ bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
Fixups.clear();
raw_svector_ostream OS(Data);
- assert(
- Layout.getAssembler().getContext().getAsmInfo()->getMinInstAlignment() ==
- 1 &&
- "expected 1-byte alignment");
+ assert(Asm.getContext().getAsmInfo()->getMinInstAlignment() == 1 &&
+ "expected 1-byte alignment");
if (Value == 0) {
WasRelaxed = OldSize != Data.size();
return true;
@@ -332,8 +331,8 @@ bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
return true;
}
-std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(MCLEBFragment &LF,
- MCAsmLayout &Layout,
+std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(const MCAssembler &Asm,
+ MCLEBFragment &LF,
int64_t &Value) const {
if (LF.isSigned())
return std::make_pair(false, false);
@@ -342,7 +341,8 @@ std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(MCLEBFragment &LF,
LF.getFixups().push_back(
MCFixup::create(0, &Expr, FK_Data_leb128, Expr.getLoc()));
}
- return std::make_pair(Expr.evaluateKnownAbsolute(Value, Layout), false);
+ return std::make_pair(Expr.evaluateKnownAbsolute(Value, *Asm.getLayout()),
+ false);
}
// Given a compressed control flow instruction this function returns
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
index 9ef1eaf394a1d..886e7efe76bcb 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
@@ -89,11 +89,11 @@ class RISCVAsmBackend : public MCAsmBackend {
void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const override;
- bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF, MCAsmLayout &Layout,
+ bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const override;
- bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
+ bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const override;
- std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout,
+ std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
int64_t &Value) const override;
bool writeNopData(raw_ostream &OS, uint64_t Count,
More information about the llvm-commits
mailing list