Index: llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp =================================================================== --- llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp +++ llvm/trunk/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp @@ -296,16 +296,6 @@ } } -static unsigned getSize(unsigned Kind) { - switch (Kind) { - default: - return 4; - case RISCV::fixup_riscv_rvc_jump: - case RISCV::fixup_riscv_rvc_branch: - return 2; - } -} - void RISCVAsmBackend::applyFixup(const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, MutableArrayRef Data, uint64_t Value, @@ -321,16 +311,13 @@ Value <<= Info.TargetOffset; unsigned Offset = Fixup.getOffset(); - unsigned FullSize = getSize(Fixup.getKind()); + unsigned NumBytes = alignTo(Info.TargetSize + Info.TargetOffset, 8) / 8; -#ifndef NDEBUG - unsigned NumBytes = (Info.TargetSize + 7) / 8; assert(Offset + NumBytes <= Data.size() && "Invalid fixup offset!"); -#endif // For each byte of the fragment that the fixup touches, mask in the // bits from the fixup value. - for (unsigned i = 0; i != FullSize; ++i) { + for (unsigned i = 0; i != NumBytes; ++i) { Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff); } }