This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: SUBREGs of hard registers: when not to simplify
> Date: Wed, 27 Oct 1999 15:57:35 -0400
> From: Michael Meissner <meissner@cygnus.com>
>
> On Wed, Oct 27, 1999 at 02:25:49PM +1000, Geoff Keating wrote:
> >
> > If you turn (subreg:SF (reg/i:SC r3) 1) into (reg:SF r4) before function
> > inlining has finished, integrate will have trouble when it goes to
> > look for the return value because you've lost the '/i'. This was causing
> > complex-5 to fail at -O3.
>
> This looks reasonable. Note, movsf seems to have such extra baggage compared
> to movdf, that I wonder sometimes if it is worth it to keep around (either by
> simplifying movsf so it is like movdf, or adding the same stuff to movdf).
> Note, this will obviously affect AIX (or sysv/eabi's -mcall-aix) more than
> sysv/eabi, since there fp is never passed in integer registers.
I can't see any difference in gcc's code generation for his procedure:
__complex__ float foo(void)
{
return 1.0f + 1.5fi;
}
under sysv, sysv/eabi, or -mcall-aix. I'm suspicious about the
call-aix result, though. In all the cases, the return value got
passed in registers r3 and r4, not FP registers.
Anyway, I've committed the patch.
--
Geoffrey Keating <geoffk@cygnus.com>