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  <[email protected]>

    Backport from mainline:
    2015-08-27  Ramana Radhakrishnan  <[email protected]>
                Andre Vieira  <[email protected]>

        * 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  <[email protected]>

    Backport from mainline:
    2015-08-27  Andre Vieira  <[email protected]>

        * gcc.target/aarch64/long_branch_1.c: New test.


Reply via email to