[Bug target/48830] [4.4/4.5/4.6/4.7 Regression] unrecognized insn: storing invalid upper fp reg in SImode to stack
hp at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun May 1 11:14:00 GMT 2011
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.
More information about the Gcc-bugs
mailing list