Subregs and objects with holes (new patch)
Rask Ingemann Lambertsen
rask@sygehus.dk
Fri Nov 24 09:51:00 GMT 2006
On Thu, Nov 23, 2006 at 07:53:42PM +0000, Joseph S. Myers wrote:
> Bootstrapped with no regressions on i686-pc-linux-gnu.
AFAIK, i686-pc-linux-gnu defaults to -m96bit-long-double. How did you
test it with -m128bit-long-double?
> Index: gcc/doc/tm.texi
> ===================================================================
> --- gcc/doc/tm.texi (revision 119097)
> +++ gcc/doc/tm.texi (working copy)
> @@ -1959,6 +1959,24 @@
> @end smallexample
> @end defmac
>
> +@defmac MODE_BIGGER_IN_MEMORY (@var{mode}, @var{regno})
> +A C expression that is nonzero if a value of mode @var{mode}, stored
> +in memory, ends with padding that causes it to take up more space than
> +in registers starting at register number @var{regno}. By default this
> +is zero.
> +
> +For example, if a floating-point value is stored in three 32-bit
> +registers but takes up 128 bits in memory, then this would be
> +nonzero.
> +@end defmac
You're comparing apples to oranges. The size of a mode in registers is a
number of hard registers while the size of a mode in memory is a number of
bits. It can't come up with a better wording right now, though.
Perhaps change the name of the macro to HARD_REGNO_NREGS_HAS_PADDING to
make it clear, that it is closely tied to HARD_REGNO_NREGS_WITH_PADDING?
--
Rask Ingemann Lambertsen
More information about the Gcc-patches
mailing list