http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48830
Hans-Peter Nilsson <hp at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |NEW --- Comment #8 from Hans-Peter Nilsson <hp at gcc dot gnu.org> 2011-05-01 11:03:45 UTC --- (In reply to comment #7) > > The root problem seems to be that the SPARC port allows a change from > > DImode to > > SImode for regno 66 (%f34) (by CANNOT_CHANGE_MODE_CLASS) > I'm a bit reluctant to tweak the macro on the > release branches because this is a sensitive one. A quick vetting of uses will hopefully convince you like me: when CLASS is EXTRA_FP_REGS, for at least 4.4 and trunk all uses seem to be from testing an "upper" floating-point register number, for which TO has no reason to be SImode. Being a port-local change, this seems as safe as it can be. (Famous last words.) BTW incidentally-related: maybe a good time to introduce a register class that is actually the EXTRA_FP_REGS (the upper ones), with its current contents renamed to ALL_FP_REGS. See "misnomer" in the sparc.h enum reg_class comment. > I'll investigate on > my side. Very much appreciated. Feel free to take the bug; I'm unassigning myself as I can't commit to testing the patches (at least) the next few days.