From: Eric Botcazou <ebotca...@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.