Subregs and objects with holes (new patch)

Rask Ingemann Lambertsen
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