"jakub at gcc dot gnu.org via Gcc-bugs" <gcc-bugs@gcc.gnu.org> writes:

> 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.

I think this (the second) is the case.

Reply via email to