[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