The AsmParser checks for the range of a pc-relative immediate operand, but when that operand is a specified label there was previously no such check performed.
This patch adds checks for these operands in applyFixup(), at which point the actual offset is known.
Hmm, this scenario could be triggered by wrong assembler input (e.g. something simple like j .+1), so I don't think this should result in an assert (internal compiler error).
GCC/binutils currently seems to simply ignore that case (and round down), which also isn't ideal.
I think this really should be a user-level error message, not an assert.