[gcc-5-branch][PATCH][AARCH64]Fix for branch offsets over 1 MiB
Andre Vieira
Andre.SimoesDiasVieira@arm.com
Fri Sep 25 12:21:00 GMT 2015
Ping.
On 11/09/15 18:15, Andre Vieira wrote:
> Conditional branches have a maximum range of [-1048576, 1048572]. Any
> destination further away can not be reached by these.
> To be able to have conditional branches in very large functions, we
> invert the condition and change the destination to jump over an
> unconditional branch to the original, far away, destination.
>
> This patch backports the fix from trunk to the gcc-5-branch.
> The original patch is at:
> https://gcc.gnu.org/ml/gcc-patches/2015-08/msg01493.html
>
> gcc/ChangeLog:
> 2015-09-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
>
> Backport from mainline:
> 2015-08-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
> Andre Vieira <andre.simoesdiasvieira@arm.com>
>
> * config/aarch64/aarch64.md (*condjump): Handle functions > 1 MiB.
> (*cb<optab><mode>1): Likewise.
> (*tb<optab><mode>1): Likewise.
> (*cb<optab><mode>1): Likewise.
> * config/aarch64/iterators.md (inv_cb): New code attribute.
> (inv_tb): Likewise.
> * config/aarch64/aarch64.c (aarch64_gen_far_branch): New.
> * config/aarch64/aarch64-protos.h (aarch64_gen_far_branch): New.
>
>
> gcc/testsuite/ChangeLog:
> 2015-09-09 Andre Vieira <andre.simoesdiasvieira@arm.com>
>
> Backport from mainline:
> 2015-08-27 Andre Vieira <andre.simoesdiasvieira@arm.com>
>
> * gcc.target/aarch64/long_branch_1.c: New test.
>
More information about the Gcc-patches
mailing list