aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcov-io.h
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2018-06-29 13:36:35 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2018-06-29 13:36:35 +0000
commit52057dc4ac5295caebf83147f688d769c93cbc8d (patch)
tree95dfcfdded0b4e95879b33b300ba999cb847f437 /gcc/gcov-io.h
parentb33aa7209ed570864189dba4c070565ea4a1554b (diff)
downloadgcc-52057dc4ac5295caebf83147f688d769c93cbc8d.zip
gcc-52057dc4ac5295caebf83147f688d769c93cbc8d.tar.gz
gcc-52057dc4ac5295caebf83147f688d769c93cbc8d.tar.bz2
[arm] Avoid STRD with odd register for TARGET_ARM in output_move_double
In this testcase the user forces an odd register as the starting reg for a DFmode value. The output_move_double function tries to store that using an STRD instruction. But for TARGET_ARM the starting register of an STRD must be an even one. This is always the case with compiler-allocated registers for DFmode values, but the inline assembly forced our hand here. This patch restricts the STRD-emitting logic in output_move_double to not avoid odd-numbered source registers in STRD. I'm not a fan of the whole function, we should be exposing a lot of the logic in there to RTL rather than at the final output stage, but that would need to be fixed separately. * config/arm/arm.c (output_move_double): Don't allow STRD instructions if starting source register is not even. * gcc.target/arm/arm-soft-strd-even.c: New test. From-SVN: r262250
Diffstat (limited to 'gcc/gcov-io.h')
0 files changed, 0 insertions, 0 deletions