https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68729

Jeffrey A. Law <law at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |law at redhat dot com

--- Comment #2 from Jeffrey A. Law <law at redhat dot com> ---
It's been a *long* time, but my recollection was that we didn't allow QI/HI
objects in the floating point registers, largely in part because we don't have
a way to load up just 8 or 16 bits.

In the case you're running into, I believe he high portion has to be considered
"clobbered" as in we won't know its contents.  So I think the clause where we
generate a new SUBREG expression and call alter_subreg is safe.  Essentially
operand1 ought to be a MEM of some kind after that code fragment (as it would
be if operand1 was a pseudo rather than a paradoxical pseudo).

The scratch should be used to compute the address of the memory location and
ultimately we need to get into the code which handles that case that you
quoted.  Since we're ultimately doing the load/store in SImode I wonder what
fallout we'd see from changing "mode" when we generate the subreg & call
alter_subreg on it which ought to get us into the code to handle REG+D cases
when the D is too big for FP loads/stores.

Reply via email to