This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, 29 Jun 2018 at 15:32, Kyrill Tkachov <kyrylo.tkachov@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? Thanks, Christophe > Committing to trunk. > Thanks, > Kyrill > > 2018-06-29 Kyrylo Tkachov <kyrylo.tkachov@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.tkachov@arm.com> > > * gcc.target/arm/arm-soft-strd-even.c: New test.
Attachment:
strd.chlog.txt
Description: Text document
Attachment:
strd.patch.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |