Hi Christophe,
On 02/07/18 13:17, Christophe Lyon wrote:
On Fri, 29 Jun 2018 at 15:32, Kyrill Tkachov
<kyrylo.tkac...@foss.arm.com> wrote:
Hi all,
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.
This patch is much safer for backporting purposes.
Bootstrapped and tested on arm-none-linux-gnueabihf.
Hi Kyrill,
I think you want to skip this test if one overrides -mfloat-abi, like
the small attached patch does.
OK?
Ok.
Thanks,
Kyrill
Thanks,
Christophe
Committing to trunk.
Thanks,
Kyrill
2018-06-29 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
* config/arm/arm.c (output_move_double): Don't allow STRD instructions
if starting source register is not even.
2018-06-29 Kyrylo Tkachov <kyrylo.tkac...@arm.com>
* gcc.target/arm/arm-soft-strd-even.c: New test.