[gcc-5-branch][PATCH][AARCH64]Fix for branch offsets over 1 MiB

James Greenhalgh james.greenhalgh@arm.com
Fri Sep 25 13:04:00 GMT 2015


On Fri, Sep 11, 2015 at 06:15:23PM +0100, 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

OK.

Thanks,
James

> 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