[llvm] b5663d0 - MCAsmBackend: Remove the MCAssembler argument from relax*
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Fri May 23 23:52:30 PDT 2025
Author: Fangrui Song
Date: 2025-05-23T23:52:26-07:00
New Revision: b5663d02a7928856aff116e534c8d895ed4622e5
URL: https://github.com/llvm/llvm-project/commit/b5663d02a7928856aff116e534c8d895ed4622e5
DIFF: https://github.com/llvm/llvm-project/commit/b5663d02a7928856aff116e534c8d895ed4622e5.diff
LOG: MCAsmBackend: Remove the MCAssembler argument from relax*
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 89f3fdc88e7da..d18744d39bdac 100644
--- a/llvm/include/llvm/MC/MCAsmBackend.h
+++ b/llvm/include/llvm/MC/MCAsmBackend.h
@@ -165,22 +165,20 @@ class MCAsmBackend {
virtual void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const {};
- virtual bool relaxDwarfLineAddr(const MCAssembler &Asm,
- MCDwarfLineAddrFragment &DF,
+ // Defined by linker relaxation targets.
+ virtual bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const {
return false;
}
-
- virtual bool relaxDwarfCFA(const MCAssembler &Asm,
- MCDwarfCallFrameFragment &DF,
+ virtual bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
return false;
}
// Defined by linker relaxation targets to possibly emit LEB128 relocations
// and set Value at the relocated location.
- virtual std::pair<bool, bool>
- relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF, int64_t &Value) const {
+ virtual std::pair<bool, bool> relaxLEB128(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 8a66cdbaed41d..163b45ca41822 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -1046,7 +1046,7 @@ bool MCAssembler::relaxLEB(MCLEBFragment &LF) {
: LF.getValue().evaluateAsAbsolute(Value, *this);
if (!Abs) {
bool Relaxed, UseZeroPad;
- std::tie(Relaxed, UseZeroPad) = getBackend().relaxLEB128(*this, LF, Value);
+ std::tie(Relaxed, UseZeroPad) = getBackend().relaxLEB128(LF, Value);
if (!Relaxed) {
getContext().reportError(LF.getValue().getLoc(),
Twine(LF.isSigned() ? ".s" : ".u") +
@@ -1134,7 +1134,7 @@ bool MCAssembler::relaxBoundaryAlign(MCBoundaryAlignFragment &BF) {
bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
bool WasRelaxed;
- if (getBackend().relaxDwarfLineAddr(*this, DF, WasRelaxed))
+ if (getBackend().relaxDwarfLineAddr(DF, WasRelaxed))
return WasRelaxed;
MCContext &Context = getContext();
@@ -1156,7 +1156,7 @@ bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
bool MCAssembler::relaxDwarfCallFrameFragment(MCDwarfCallFrameFragment &DF) {
bool WasRelaxed;
- if (getBackend().relaxDwarfCFA(*this, DF, WasRelaxed))
+ if (getBackend().relaxDwarfCFA(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 8e910cb99823e..8e01199da173b 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
@@ -282,19 +282,17 @@ getRelocPairForSize(unsigned Size) {
}
}
-std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(const MCAssembler &Asm,
- MCLEBFragment &LF,
+std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(MCLEBFragment &LF,
int64_t &Value) const {
const MCExpr &Expr = LF.getValue();
- if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, Asm))
+ if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, *Asm))
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(const MCAssembler &Asm,
- MCDwarfLineAddrFragment &DF,
+bool LoongArchAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const {
MCContext &C = getContext();
@@ -305,9 +303,9 @@ bool LoongArchAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
size_t OldSize = Data.size();
int64_t Value;
- if (AddrDelta.evaluateAsAbsolute(Value, Asm))
+ if (AddrDelta.evaluateAsAbsolute(Value, *Asm))
return false;
- bool IsAbsolute = AddrDelta.evaluateKnownAbsolute(Value, Asm);
+ bool IsAbsolute = AddrDelta.evaluateKnownAbsolute(Value, *Asm);
assert(IsAbsolute && "CFA with invalid expression");
(void)IsAbsolute;
@@ -361,8 +359,7 @@ bool LoongArchAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
return true;
}
-bool LoongArchAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
- MCDwarfCallFrameFragment &DF,
+bool LoongArchAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
const MCExpr &AddrDelta = DF.getAddrDelta();
SmallVectorImpl<char> &Data = DF.getContents();
@@ -370,9 +367,9 @@ bool LoongArchAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
size_t OldSize = Data.size();
int64_t Value;
- if (AddrDelta.evaluateAsAbsolute(Value, Asm))
+ if (AddrDelta.evaluateAsAbsolute(Value, *Asm))
return false;
- bool IsAbsolute = AddrDelta.evaluateKnownAbsolute(Value, Asm);
+ bool IsAbsolute = AddrDelta.evaluateKnownAbsolute(Value, *Asm);
assert(IsAbsolute && "CFA with invalid expression");
(void)IsAbsolute;
diff --git a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
index 3c9828accaa66..aeedafe2b44b4 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
@@ -60,13 +60,12 @@ class LoongArchAsmBackend : public MCAsmBackend {
void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const override {}
- std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
- int64_t &Value) const override;
-
- bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
+ bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const override;
- bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
+ bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const override;
+ std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF,
+ int64_t &Value) const override;
bool writeNopData(raw_ostream &OS, uint64_t Count,
const MCSubtargetInfo *STI) const override;
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index 33b333dcdf1cb..b17de5520025d 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
@@ -235,8 +235,7 @@ void RISCVAsmBackend::relaxInstruction(MCInst &Inst,
Inst = std::move(Res);
}
-bool RISCVAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
- MCDwarfLineAddrFragment &DF,
+bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const {
MCContext &C = getContext();
@@ -248,7 +247,7 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
int64_t Value;
[[maybe_unused]] bool IsAbsolute =
- AddrDelta.evaluateKnownAbsolute(Value, Asm);
+ AddrDelta.evaluateKnownAbsolute(Value, *Asm);
assert(IsAbsolute && "CFA with invalid expression");
Data.clear();
@@ -301,8 +300,7 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
return true;
}
-bool RISCVAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
- MCDwarfCallFrameFragment &DF,
+bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const {
const MCExpr &AddrDelta = DF.getAddrDelta();
SmallVectorImpl<char> &Data = DF.getContents();
@@ -310,10 +308,10 @@ bool RISCVAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
size_t OldSize = Data.size();
int64_t Value;
- if (AddrDelta.evaluateAsAbsolute(Value, Asm))
+ if (AddrDelta.evaluateAsAbsolute(Value, *Asm))
return false;
[[maybe_unused]] bool IsAbsolute =
- AddrDelta.evaluateKnownAbsolute(Value, Asm);
+ AddrDelta.evaluateKnownAbsolute(Value, *Asm);
assert(IsAbsolute && "CFA with invalid expression");
Data.clear();
@@ -363,8 +361,7 @@ bool RISCVAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
return true;
}
-std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(const MCAssembler &Asm,
- MCLEBFragment &LF,
+std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(MCLEBFragment &LF,
int64_t &Value) const {
if (LF.isSigned())
return std::make_pair(false, false);
@@ -373,7 +370,7 @@ std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(const MCAssembler &Asm,
LF.getFixups().push_back(
MCFixup::create(0, &Expr, FK_Data_leb128, Expr.getLoc()));
}
- return std::make_pair(Expr.evaluateKnownAbsolute(Value, Asm), false);
+ return std::make_pair(Expr.evaluateKnownAbsolute(Value, *Asm), false);
}
bool RISCVAsmBackend::mayNeedRelaxation(const MCInst &Inst,
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
index b03706943863d..65f7b1ed20173 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h
@@ -72,11 +72,11 @@ class RISCVAsmBackend : public MCAsmBackend {
void relaxInstruction(MCInst &Inst,
const MCSubtargetInfo &STI) const override;
- bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
+ bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
bool &WasRelaxed) const override;
- bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
+ bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
bool &WasRelaxed) const override;
- std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
+ std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF,
int64_t &Value) const override;
bool writeNopData(raw_ostream &OS, uint64_t Count,
More information about the llvm-commits
mailing list