https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98931

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
And the problem is not something not being multiple of 2, but just out of range
jump.  The code has:
      10:       f04e e001       dls     lr, lr
      14:       9900            ldr     r1, [sp, #0]
...
    130e:       f00f c7ff       le      lr, 316 <foo+0x316>
if I manually move .L2 label so that it doesn't complain anymore, which means
it can jump only to -4096 bytes from the end of the le instruction, but it was
supposed to jump to foo+0x14, i.e. to 4862 bytes before the end of the le insn
at 0x1312.
So, either the computation of the instruction sizes is incorrect, or for this
kind of branch nothing checks whether the distance is in range.

Reply via email to