Skip to content

Commit c239acb

Browse files
committed
MCFixup: Make FixupKindInfo smaller and change getFixupKindInfo to return value
We will increase the use of raw relocation types and eliminate fixup kinds that correspond to relocation types. The getFixupKindInfo functions will return an rvalue instead. Let's update the return type from a const reference to a value type.
1 parent 356ff75 commit c239acb

File tree

33 files changed

+45
-60
lines changed

33 files changed

+45
-60
lines changed

bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2336,7 +2336,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
23362336
std::optional<Relocation>
23372337
createRelocation(const MCFixup &Fixup,
23382338
const MCAsmBackend &MAB) const override {
2339-
const MCFixupKindInfo &FKI = MAB.getFixupKindInfo(Fixup.getKind());
2339+
MCFixupKindInfo FKI = MAB.getFixupKindInfo(Fixup.getKind());
23402340

23412341
assert(FKI.TargetOffset == 0 && "0-bit relocation offset expected");
23422342
const uint64_t RelOffset = Fixup.getOffset();

bolt/lib/Target/X86/X86MCPlusBuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2441,7 +2441,7 @@ class X86MCPlusBuilder : public MCPlusBuilder {
24412441
std::optional<Relocation>
24422442
createRelocation(const MCFixup &Fixup,
24432443
const MCAsmBackend &MAB) const override {
2444-
const MCFixupKindInfo &FKI = MAB.getFixupKindInfo(Fixup.getKind());
2444+
MCFixupKindInfo FKI = MAB.getFixupKindInfo(Fixup.getKind());
24452445

24462446
assert(FKI.TargetOffset == 0 && "0-bit relocation offset expected");
24472447
const uint64_t RelOffset = Fixup.getOffset();

llvm/include/llvm/MC/MCAsmBackend.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class MCAsmBackend {
8787
virtual std::optional<MCFixupKind> getFixupKind(StringRef Name) const;
8888

8989
/// Get information on a fixup kind.
90-
virtual const MCFixupKindInfo &getFixupKindInfo(MCFixupKind Kind) const;
90+
virtual MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const;
9191

9292
// Hook to check if a relocation is needed. The default implementation tests
9393
// whether the MCValue has a relocation specifier.

llvm/include/llvm/MC/MCFixupKindInfo.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#ifndef LLVM_MC_MCFIXUPKINDINFO_H
1010
#define LLVM_MC_MCFIXUPKINDINFO_H
1111

12+
#include <cstdint>
13+
1214
namespace llvm {
1315

1416
/// Target independent information on a fixup kind.
@@ -35,11 +37,11 @@ struct MCFixupKindInfo {
3537
const char *Name;
3638

3739
/// The bit offset to write the relocation into.
38-
unsigned TargetOffset;
40+
uint8_t TargetOffset;
3941

4042
/// The number of bits written by this fixup. The bits are assumed to be
4143
/// contiguous.
42-
unsigned TargetSize;
44+
uint8_t TargetSize;
4345

4446
/// Flags describing additional information on this fixup kind.
4547
unsigned Flags;

llvm/lib/MC/MCAsmBackend.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ std::optional<MCFixupKind> MCAsmBackend::getFixupKind(StringRef Name) const {
8787
return std::nullopt;
8888
}
8989

90-
const MCFixupKindInfo &MCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
90+
MCFixupKindInfo MCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
9191
static const MCFixupKindInfo Builtins[] = {
9292
{"FK_NONE", 0, 0, 0},
9393
{"FK_Data_1", 0, 8, 0},

llvm/lib/MC/MCAsmStreamer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2338,7 +2338,7 @@ void MCAsmStreamer::AddEncodingComment(const MCInst &Inst,
23382338

23392339
for (unsigned i = 0, e = Fixups.size(); i != e; ++i) {
23402340
MCFixup &F = Fixups[i];
2341-
const MCFixupKindInfo &Info =
2341+
MCFixupKindInfo Info =
23422342
getAssembler().getBackend().getFixupKindInfo(F.getKind());
23432343
for (unsigned j = 0; j != Info.TargetSize; ++j) {
23442344
unsigned Index = F.getOffset() * 8 + Info.TargetOffset + j;

llvm/lib/MC/MachObjectWriter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ MachSymbolData::operator<(const MachSymbolData &RHS) const {
8282
}
8383

8484
bool MachObjectWriter::isFixupKindPCRel(const MCAssembler &Asm, unsigned Kind) {
85-
const MCFixupKindInfo &FKI = Asm.getBackend().getFixupKindInfo(
86-
(MCFixupKind) Kind);
85+
MCFixupKindInfo FKI = Asm.getBackend().getFixupKindInfo((MCFixupKind)Kind);
8786

8887
return FKI.Flags & MCFixupKindInfo::FKF_IsPCRel;
8988
}

llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class AArch64AsmBackend : public MCAsmBackend {
4444

4545
std::optional<MCFixupKind> getFixupKind(StringRef Name) const override;
4646

47-
const MCFixupKindInfo &getFixupKindInfo(MCFixupKind Kind) const override {
47+
MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const override {
4848
const static MCFixupKindInfo Infos[AArch64::NumTargetFixupKinds] = {
4949
// This table *must* be in the order that the fixup_* kinds are defined
5050
// in AArch64FixupKinds.h.

llvm/lib/Target/AArch64/MCTargetDesc/AArch64WinCOFFObjectWriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ unsigned AArch64WinCOFFObjectWriter::getRelocType(
8686
A64E->getSpecifierName() +
8787
" unsupported on COFF targets");
8888
} else {
89-
const MCFixupKindInfo &Info = MAB.getFixupKindInfo(Fixup.getKind());
89+
MCFixupKindInfo Info = MAB.getFixupKindInfo(Fixup.getKind());
9090
Ctx.reportError(Fixup.getLoc(), Twine("relocation type ") + Info.Name +
9191
" unsupported on COFF targets");
9292
}

llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class AMDGPUAsmBackend : public MCAsmBackend {
5050
const MCSubtargetInfo *STI) const override;
5151

5252
std::optional<MCFixupKind> getFixupKind(StringRef Name) const override;
53-
const MCFixupKindInfo &getFixupKindInfo(MCFixupKind Kind) const override;
53+
MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const override;
5454
};
5555

5656
} //End anonymous namespace
@@ -172,8 +172,7 @@ AMDGPUAsmBackend::getFixupKind(StringRef Name) const {
172172
return std::nullopt;
173173
}
174174

175-
const MCFixupKindInfo &AMDGPUAsmBackend::getFixupKindInfo(
176-
MCFixupKind Kind) const {
175+
MCFixupKindInfo AMDGPUAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
177176
const static MCFixupKindInfo Infos[AMDGPU::NumTargetFixupKinds] = {
178177
// name offset bits flags
179178
{ "fixup_si_sopp_br", 0, 16, MCFixupKindInfo::FKF_IsPCRel },

0 commit comments

Comments
 (0)