[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/24571] [avr] Relaxation does not shorten jmp or call to target a
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug ld/24571] [avr] Relaxation does not shorten jmp or call to target at pc-relative range boundary |
Date: |
Tue, 21 May 2019 07:20:24 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=24571
--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
The master branch has been updated by Senthil Kumar Selvaraj
<address@hidden>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7622049e0bef81fab900860400838bc977449892
commit 7622049e0bef81fab900860400838bc977449892
Author: Senthil Kumar Selvaraj <address@hidden>
Date: Thu May 16 12:12:33 2019 +0530
Fix PR 24571 - Relaxation does not shorten jmp or call to target at
pc-relative range boundary
The range check done to transform an absolute call/jump to a pc-relative
one is
off-by-one, and that causes this shortening optimization to be missed if
the
branch target is right at the range boundary.
In the non-shrinkable case, the range is what is mentioned in the ISA -
-4094
bytes in the backward direction, and 4096 bytes in the positive direction.
In the shrinkable case, the forward jump range increases by two bytes
(deleted
because of the shortening from call/jmp to rcall/rjmp), and therefore, the
range is -4094 in the reverse, and 4098 in the positive direction.
Fix the ranges for !shrinkable and shrinkable cases, and add a test caes to
ensure jumps to max forward and backward ranges get relaxed to rjmp.
--
You are receiving this mail because:
You are on the CC list for the bug.