Skip to content

Commit 8f7887a

Browse files
committed
[MC] Remove the MCAsmLayout parameter from MCAsmBackend::relax*
finishLayout is now the only member function that has a MCAsmLayout parameter.
1 parent 95038a5 commit 8f7887a

File tree

6 files changed

+38
-36
lines changed

6 files changed

+38
-36
lines changed

llvm/include/llvm/MC/MCAsmBackend.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,20 +178,22 @@ class MCAsmBackend {
178178
virtual void relaxInstruction(MCInst &Inst,
179179
const MCSubtargetInfo &STI) const {};
180180

181-
virtual bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
182-
MCAsmLayout &Layout, bool &WasRelaxed) const {
181+
virtual bool relaxDwarfLineAddr(const MCAssembler &Asm,
182+
MCDwarfLineAddrFragment &DF,
183+
bool &WasRelaxed) const {
183184
return false;
184185
}
185186

186-
virtual bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
187+
virtual bool relaxDwarfCFA(const MCAssembler &Asm,
188+
MCDwarfCallFrameFragment &DF,
187189
bool &WasRelaxed) const {
188190
return false;
189191
}
190192

191193
// Defined by linker relaxation targets to possibly emit LEB128 relocations
192194
// and set Value at the relocated location.
193195
virtual std::pair<bool, bool>
194-
relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout, int64_t &Value) const {
196+
relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF, int64_t &Value) const {
195197
return std::make_pair(false, false);
196198
}
197199

llvm/lib/MC/MCAssembler.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,8 +1154,7 @@ bool MCAssembler::relaxLEB(MCLEBFragment &LF) {
11541154
: LF.getValue().evaluateAsAbsolute(Value, *Layout);
11551155
if (!Abs) {
11561156
bool Relaxed, UseZeroPad;
1157-
std::tie(Relaxed, UseZeroPad) =
1158-
getBackend().relaxLEB128(LF, *Layout, Value);
1157+
std::tie(Relaxed, UseZeroPad) = getBackend().relaxLEB128(*this, LF, Value);
11591158
if (!Relaxed) {
11601159
getContext().reportError(LF.getValue().getLoc(),
11611160
Twine(LF.isSigned() ? ".s" : ".u") +
@@ -1242,9 +1241,8 @@ bool MCAssembler::relaxBoundaryAlign(MCBoundaryAlignFragment &BF) {
12421241
}
12431242

12441243
bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
1245-
12461244
bool WasRelaxed;
1247-
if (getBackend().relaxDwarfLineAddr(DF, *Layout, WasRelaxed))
1245+
if (getBackend().relaxDwarfLineAddr(*this, DF, WasRelaxed))
12481246
return WasRelaxed;
12491247

12501248
MCContext &Context = getContext();
@@ -1266,7 +1264,7 @@ bool MCAssembler::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF) {
12661264

12671265
bool MCAssembler::relaxDwarfCallFrameFragment(MCDwarfCallFrameFragment &DF) {
12681266
bool WasRelaxed;
1269-
if (getBackend().relaxDwarfCFA(DF, *Layout, WasRelaxed))
1267+
if (getBackend().relaxDwarfCFA(*this, DF, WasRelaxed))
12701268
return WasRelaxed;
12711269

12721270
MCContext &Context = getContext();

llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -299,21 +299,22 @@ getRelocPairForSize(unsigned Size) {
299299
}
300300
}
301301

302-
std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(MCLEBFragment &LF,
303-
MCAsmLayout &Layout,
302+
std::pair<bool, bool> LoongArchAsmBackend::relaxLEB128(const MCAssembler &Asm,
303+
MCLEBFragment &LF,
304304
int64_t &Value) const {
305305
const MCExpr &Expr = LF.getValue();
306-
if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, Layout))
306+
if (LF.isSigned() || !Expr.evaluateKnownAbsolute(Value, *Asm.getLayout()))
307307
return std::make_pair(false, false);
308308
LF.getFixups().push_back(
309309
MCFixup::create(0, &Expr, FK_Data_leb128, Expr.getLoc()));
310310
return std::make_pair(true, true);
311311
}
312312

313-
bool LoongArchAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
314-
MCAsmLayout &Layout,
313+
bool LoongArchAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
314+
MCDwarfLineAddrFragment &DF,
315315
bool &WasRelaxed) const {
316-
MCContext &C = Layout.getAssembler().getContext();
316+
auto &Layout = *Asm.getLayout();
317+
MCContext &C = Asm.getContext();
317318

318319
int64_t LineDelta = DF.getLineDelta();
319320
const MCExpr &AddrDelta = DF.getAddrDelta();
@@ -378,14 +379,15 @@ bool LoongArchAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
378379
return true;
379380
}
380381

381-
bool LoongArchAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
382-
MCAsmLayout &Layout,
382+
bool LoongArchAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
383+
MCDwarfCallFrameFragment &DF,
383384
bool &WasRelaxed) const {
384385
const MCExpr &AddrDelta = DF.getAddrDelta();
385386
SmallVectorImpl<char> &Data = DF.getContents();
386387
SmallVectorImpl<MCFixup> &Fixups = DF.getFixups();
387388
size_t OldSize = Data.size();
388389

390+
auto &Layout = *Asm.getLayout();
389391
int64_t Value;
390392
if (AddrDelta.evaluateAsAbsolute(Value, Layout))
391393
return false;

llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ class LoongArchAsmBackend : public MCAsmBackend {
7171
void relaxInstruction(MCInst &Inst,
7272
const MCSubtargetInfo &STI) const override {}
7373

74-
std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout,
74+
std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
7575
int64_t &Value) const override;
7676

77-
bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF, MCAsmLayout &Layout,
77+
bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
7878
bool &WasRelaxed) const override;
79-
bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
79+
bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
8080
bool &WasRelaxed) const override;
8181

8282
bool writeNopData(raw_ostream &OS, uint64_t Count,

llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,10 @@ void RISCVAsmBackend::relaxInstruction(MCInst &Inst,
202202
Inst = std::move(Res);
203203
}
204204

205-
bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
206-
MCAsmLayout &Layout,
205+
bool RISCVAsmBackend::relaxDwarfLineAddr(const MCAssembler &Asm,
206+
MCDwarfLineAddrFragment &DF,
207207
bool &WasRelaxed) const {
208-
MCContext &C = Layout.getAssembler().getContext();
208+
MCContext &C = Asm.getContext();
209209

210210
int64_t LineDelta = DF.getLineDelta();
211211
const MCExpr &AddrDelta = DF.getAddrDelta();
@@ -215,7 +215,7 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
215215

216216
int64_t Value;
217217
[[maybe_unused]] bool IsAbsolute =
218-
AddrDelta.evaluateKnownAbsolute(Value, Layout);
218+
AddrDelta.evaluateKnownAbsolute(Value, *Asm.getLayout());
219219
assert(IsAbsolute && "CFA with invalid expression");
220220

221221
Data.clear();
@@ -268,9 +268,10 @@ bool RISCVAsmBackend::relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF,
268268
return true;
269269
}
270270

271-
bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
272-
MCAsmLayout &Layout,
271+
bool RISCVAsmBackend::relaxDwarfCFA(const MCAssembler &Asm,
272+
MCDwarfCallFrameFragment &DF,
273273
bool &WasRelaxed) const {
274+
auto &Layout = *Asm.getLayout();
274275
const MCExpr &AddrDelta = DF.getAddrDelta();
275276
SmallVectorImpl<char> &Data = DF.getContents();
276277
SmallVectorImpl<MCFixup> &Fixups = DF.getFixups();
@@ -287,10 +288,8 @@ bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
287288
Fixups.clear();
288289
raw_svector_ostream OS(Data);
289290

290-
assert(
291-
Layout.getAssembler().getContext().getAsmInfo()->getMinInstAlignment() ==
292-
1 &&
293-
"expected 1-byte alignment");
291+
assert(Asm.getContext().getAsmInfo()->getMinInstAlignment() == 1 &&
292+
"expected 1-byte alignment");
294293
if (Value == 0) {
295294
WasRelaxed = OldSize != Data.size();
296295
return true;
@@ -332,8 +331,8 @@ bool RISCVAsmBackend::relaxDwarfCFA(MCDwarfCallFrameFragment &DF,
332331
return true;
333332
}
334333

335-
std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(MCLEBFragment &LF,
336-
MCAsmLayout &Layout,
334+
std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(const MCAssembler &Asm,
335+
MCLEBFragment &LF,
337336
int64_t &Value) const {
338337
if (LF.isSigned())
339338
return std::make_pair(false, false);
@@ -342,7 +341,8 @@ std::pair<bool, bool> RISCVAsmBackend::relaxLEB128(MCLEBFragment &LF,
342341
LF.getFixups().push_back(
343342
MCFixup::create(0, &Expr, FK_Data_leb128, Expr.getLoc()));
344343
}
345-
return std::make_pair(Expr.evaluateKnownAbsolute(Value, Layout), false);
344+
return std::make_pair(Expr.evaluateKnownAbsolute(Value, *Asm.getLayout()),
345+
false);
346346
}
347347

348348
// Given a compressed control flow instruction this function returns

llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,11 @@ class RISCVAsmBackend : public MCAsmBackend {
8989
void relaxInstruction(MCInst &Inst,
9090
const MCSubtargetInfo &STI) const override;
9191

92-
bool relaxDwarfLineAddr(MCDwarfLineAddrFragment &DF, MCAsmLayout &Layout,
92+
bool relaxDwarfLineAddr(const MCAssembler &Asm, MCDwarfLineAddrFragment &DF,
9393
bool &WasRelaxed) const override;
94-
bool relaxDwarfCFA(MCDwarfCallFrameFragment &DF, MCAsmLayout &Layout,
94+
bool relaxDwarfCFA(const MCAssembler &Asm, MCDwarfCallFrameFragment &DF,
9595
bool &WasRelaxed) const override;
96-
std::pair<bool, bool> relaxLEB128(MCLEBFragment &LF, MCAsmLayout &Layout,
96+
std::pair<bool, bool> relaxLEB128(const MCAssembler &Asm, MCLEBFragment &LF,
9797
int64_t &Value) const override;
9898

9999
bool writeNopData(raw_ostream &OS, uint64_t Count,

0 commit comments

Comments
 (0)