diff options
author | Stam Markianos-Wright <stam.markianos-wright@arm.com> | 2020-02-03 10:25:46 +0000 |
---|---|---|
committer | Stam Markianos-Wright <stam.markianos-wright@arm.com> | 2020-02-03 10:30:59 +0000 |
commit | 44f77a6dea2f312ee1743f3dde465c1b8453ee13 (patch) | |
tree | 85bdcc4d04784d2b0074d00a4a8bba04ff0d3af2 /gcc/go | |
parent | e464fc903506b75bef90374ab520b52df317a00e (diff) | |
download | gcc-44f77a6dea2f312ee1743f3dde465c1b8453ee13.zip gcc-44f77a6dea2f312ee1743f3dde465c1b8453ee13.tar.gz gcc-44f77a6dea2f312ee1743f3dde465c1b8453ee13.tar.bz2 |
This patch is for PR target/91816
This is a patch for an issue where the compiler was generating a conditional
branch in Thumb2, which was too far for b{cond} to handle.
This was originally reported at binutils:
https://sourceware.org/bugzilla/show_bug.cgi?id=24991
And then raised for GCC:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91816
As can be seen here:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cihfddaf.html
the range of a 32-bit Thumb B{cond} is +/-1MB.
This is now checked for in arm.md and an unconditional branch is generated if
the jump would be greater than 1MB.
gcc/ChangeLog
2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
PR target/91816
* config/arm/arm-protos.h: New function arm_gen_far_branch prototype.
* config/arm/arm.c (arm_gen_far_branch): New function
arm_gen_far_branch.
* config/arm/arm.md: Update b<cond> for Thumb2 range checks.
gcc/testsuite/ChangeLog
2020-02-03 Stam Markianos-Wright <stam.markianos-wright@arm.com>
PR target/91816
* gcc.target/arm/pr91816.c: New test.
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions