Index: llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp =================================================================== --- llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp +++ llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp @@ -89,21 +89,24 @@ return Value; case LoongArch::fixup_loongarch_b16: { if (!isInt<18>(Value)) - Ctx.reportError(Fixup.getLoc(), "fixup value out of range"); + Ctx.reportError(Fixup.getLoc(), + "fixup value out of range represented by 18 bit"); if (Value % 4) Ctx.reportError(Fixup.getLoc(), "fixup value must be 4-byte aligned"); return (Value >> 2) & 0xffff; } case LoongArch::fixup_loongarch_b21: { if (!isInt<23>(Value)) - Ctx.reportError(Fixup.getLoc(), "fixup value out of range"); + Ctx.reportError(Fixup.getLoc(), + "fixup value out of range represented by 23 bit"); if (Value % 4) Ctx.reportError(Fixup.getLoc(), "fixup value must be 4-byte aligned"); return ((Value & 0x3fffc) << 8) | ((Value >> 18) & 0x1f); } case LoongArch::fixup_loongarch_b26: { if (!isInt<28>(Value)) - Ctx.reportError(Fixup.getLoc(), "fixup value out of range"); + Ctx.reportError(Fixup.getLoc(), + "fixup value out of range represented by 28 bit"); if (Value % 4) Ctx.reportError(Fixup.getLoc(), "fixup value must be 4-byte aligned"); return ((Value & 0x3fffc) << 8) | ((Value >> 18) & 0x3ff); Index: llvm/test/MC/LoongArch/Relocations/fixups-diagnostics.s =================================================================== --- llvm/test/MC/LoongArch/Relocations/fixups-diagnostics.s +++ llvm/test/MC/LoongArch/Relocations/fixups-diagnostics.s @@ -1,10 +1,10 @@ # RUN: not llvm-mc --triple=loongarch64 --filetype=obj %s -o /dev/null 2>&1 | FileCheck %s - beq $a0, $a1, far_distant # CHECK: :[[#@LINE]]:3: error: fixup value out of range + beq $a0, $a1, far_distant # CHECK: :[[#@LINE]]:3: error: fixup value out of range represented by 18 bit bne $a0, $a1, unaligned # CHECK: :[[#@LINE]]:3: error: fixup value must be 4-byte aligned bnez $a0, unaligned # CHECK: :[[#@LINE]]:3: error: fixup value must be 4-byte aligned - beqz $a0, far_distant_bz # CHECK: :[[#@LINE]]:3: error: fixup value out of range + beqz $a0, far_distant_bz # CHECK: :[[#@LINE]]:3: error: fixup value out of range represented by 23 bit b unaligned # CHECK: :[[#@LINE]]:3: error: fixup value must be 4-byte aligned