Skip to content

Commit 6f6dc1f

Browse files
committed
[MC] Restore MCAsmBackend::shouldForceRelocation to false
Revert the Target.getSpecifier implementation (38c3ad3) and update SystemZAsmBackend instead. Many targets with %lo/%hi style specifiers (SPARC, MIPS, PowerPC, RISC-V) do not force relocations for these specifiers. Additionally, with the introduction of the addReloc hook, shouldForceRelocation is not that necessary and should probably be phased out.
1 parent 7857543 commit 6f6dc1f

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

llvm/include/llvm/MC/MCAsmBackend.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,11 @@ class MCAsmBackend {
8888
/// Get information on a fixup kind.
8989
virtual MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const;
9090

91-
// Hook to check if a relocation is needed. The default implementation tests
92-
// whether the MCValue has a relocation specifier.
91+
// Hook used by the default `addReloc` to check if a relocation is needed.
9392
virtual bool shouldForceRelocation(const MCAssembler &, const MCFixup &,
94-
const MCValue &, const MCSubtargetInfo *);
93+
const MCValue &, const MCSubtargetInfo *) {
94+
return false;
95+
}
9596

9697
/// Hook to check if extra nop bytes must be inserted for alignment directive.
9798
/// For some targets this may be necessary in order to support linker

llvm/lib/MC/MCAsmBackend.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,12 +109,6 @@ MCFixupKindInfo MCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
109109
return Builtins[Kind - FK_NONE];
110110
}
111111

112-
bool MCAsmBackend::shouldForceRelocation(const MCAssembler &, const MCFixup &,
113-
const MCValue &Target,
114-
const MCSubtargetInfo *) {
115-
return Target.getSpecifier();
116-
}
117-
118112
bool MCAsmBackend::fixupNeedsRelaxationAdvanced(const MCAssembler &,
119113
const MCFixup &Fixup,
120114
const MCValue &, uint64_t Value,

llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,6 @@ namespace {
200200
return Info;
201201
}
202202

203-
bool shouldForceRelocation(const MCAssembler &, const MCFixup &,
204-
const MCValue &,
205-
const MCSubtargetInfo *) override {
206-
return false;
207-
}
208-
209203
void relaxInstruction(MCInst &Inst,
210204
const MCSubtargetInfo &STI) const override {
211205
// FIXME.

llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "llvm/MC/MCInst.h"
1818
#include "llvm/MC/MCObjectWriter.h"
1919
#include "llvm/MC/MCSubtargetInfo.h"
20+
#include "llvm/MC/MCValue.h"
2021

2122
using namespace llvm;
2223

@@ -112,6 +113,8 @@ class SystemZMCAsmBackend : public MCAsmBackend {
112113
// Override MCAsmBackend
113114
std::optional<MCFixupKind> getFixupKind(StringRef Name) const override;
114115
MCFixupKindInfo getFixupKindInfo(MCFixupKind Kind) const override;
116+
bool shouldForceRelocation(const MCAssembler &, const MCFixup &,
117+
const MCValue &, const MCSubtargetInfo *) override;
115118
void applyFixup(const MCAssembler &Asm, const MCFixup &Fixup,
116119
const MCValue &Target, MutableArrayRef<char> Data,
117120
uint64_t Value, bool IsResolved,
@@ -152,6 +155,13 @@ MCFixupKindInfo SystemZMCAsmBackend::getFixupKindInfo(MCFixupKind Kind) const {
152155
return SystemZ::MCFixupKindInfos[Kind - FirstTargetFixupKind];
153156
}
154157

158+
bool SystemZMCAsmBackend::shouldForceRelocation(const MCAssembler &,
159+
const MCFixup &,
160+
const MCValue &Target,
161+
const MCSubtargetInfo *) {
162+
return Target.getSpecifier();
163+
}
164+
155165
void SystemZMCAsmBackend::applyFixup(const MCAssembler &Asm,
156166
const MCFixup &Fixup,
157167
const MCValue &Target,

0 commit comments

Comments
 (0)