[PATCH] Revert sparc vec_init improvements as they cause 64-bit regressions.
David Miller
davem@davemloft.net
Sat Nov 12 01:13:00 GMT 2011
From: Eric Botcazou <ebotcazou@adacore.com>
Date: Fri, 11 Nov 2011 11:05:06 +0100
>> One thing that really irks me is how pseudo's can only be subreg'd
>> on UNITS_PER_WORD boundaries. That's the real reason this stuff
>> doesn't work and it's nearly impossible to subreg 32-bit values
>> that end up in float regs on sparc when compiling 64-bit.
>
> Yes, this was done on purpose to solve very nasty RA/reload problems, but the
> irregularity of the SPARC register file in 64-bit mode clearly conflicts with
> it. And not all issues were solved, so we used CANNOT_CHANGE_MODE_CLASS to
> mask some of the remaining ones on SPARC (and on PA).
The first problem I ran into was combine, it uses word boundaries to
decide if a subreg store clobbers an entire register, and if so it
treats the SET_DEST as completely clobbered.
>> Anyways, commited to trunk and all the 64-bit failures should be gone.
>
> Do we have the same problem in VIS2/3 mode as in VIS1 mode? If so, then I
> agree that this is probably the best course of action in the short term.
Yes, all of the VIS cases have the same subregging issue on 64-bit.
More information about the Gcc-patches
mailing list