[llvm] RISCV, LoongArch: Encode RELAX relocation implicitly (PR #140494)
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sun May 18 20:52:46 PDT 2025
================
@@ -620,45 +620,56 @@ bool RISCVAsmBackend::addReloc(MCAssembler &Asm, const MCFragment &F,
const MCFixup &Fixup, const MCValue &Target,
uint64_t &FixedValue, bool IsResolved,
const MCSubtargetInfo *STI) {
- if (!Target.getSubSym())
- return MCAsmBackend::addReloc(Asm, F, Fixup, Target, FixedValue, IsResolved,
- STI);
- assert(Target.getSpecifier() == 0 &&
- "relocatable SymA-SymB cannot have relocation specifier");
uint64_t FixedValueA, FixedValueB;
- unsigned TA = 0, TB = 0;
- switch (Fixup.getKind()) {
- case llvm::FK_Data_1:
- TA = ELF::R_RISCV_ADD8;
- TB = ELF::R_RISCV_SUB8;
- break;
- case llvm::FK_Data_2:
- TA = ELF::R_RISCV_ADD16;
- TB = ELF::R_RISCV_SUB16;
- break;
- case llvm::FK_Data_4:
- TA = ELF::R_RISCV_ADD32;
- TB = ELF::R_RISCV_SUB32;
- break;
- case llvm::FK_Data_8:
- TA = ELF::R_RISCV_ADD64;
- TB = ELF::R_RISCV_SUB64;
- break;
- case llvm::FK_Data_leb128:
- TA = ELF::R_RISCV_SET_ULEB128;
- TB = ELF::R_RISCV_SUB_ULEB128;
- break;
- default:
- llvm_unreachable("unsupported fixup size");
+ if (Target.getSubSym()) {
----------------
MaskRay wrote:
Indenting this code block is intentional. The next code paths will become complex when we support VENDOR for #135400
https://github.com/llvm/llvm-project/pull/140494
More information about the llvm-commits
mailing list