[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