diff --git a/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp b/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp --- a/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp +++ b/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp @@ -87,6 +87,9 @@ } } else { assert(Fixup.getKind() == FK_PCRel_2); + assert(((int64_t)Value - 8) <= INT16_MAX * 8 && + ((int64_t)Value - 8) >= INT16_MIN * 8); + Value = (uint16_t)((Value - 8) / 8); support::endian::write(&Data[Fixup.getOffset() + 2], Value, Endian);