On Mon, Dec 2, 2024 at 2:01 AM Lewis Hyatt <[email protected]> wrote:
>
> This patch was previously discussed here:
> https://gcc.gnu.org/pipermail/gcc-patches/2024-November/669437.html
>
> This version addresses that feedback, and I have also moved it in the patch
> ordering to be after the change to 64-bit location_t, since it would be
> inaccurate prior to that.
>
> -- >8 --
>
> The size of struct gimple increased by 8 bytes with the change in size of
> location_t from 32- to 64-bit; adjust the WORD markings in the comments
> accordingly. It seems that most of the WORD markings were off by one already,
> probably not having been updated after a previous reduction in the size of a
> gimple, so they have become retroactively correct again, and only a couple
> needed adjustment actually.
>
> Also add an explicit 32-bit padding member to struct gimple for clarity.
>
> gcc/ChangeLog:
>
> * gimple.h (struct gphi): Update word marking comments to reflect
> the new size of location_t.
> (struct gimple): Likewise. Add gimple::pad2 explicit padding member.
> ---
> gcc/gimple.h | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/gcc/gimple.h b/gcc/gimple.h
> index 039ed66eab5..1eb880ab60a 100644
> --- a/gcc/gimple.h
> +++ b/gcc/gimple.h
> @@ -259,23 +259,27 @@ struct GTY((desc ("gimple_statement_structure (&%h)"),
> tag ("GSS_BASE"),
> in there. */
> unsigned int subcode : 16;
>
> - /* UID of this statement. This is used by passes that want to
> + /* Unused padding. */
> + unsigned int pad2 : 32;
> +
It occurs to me this makes things worse on 32bit hosts, so please change it to
a comment only
/* Unused 32bits padding on 64bit hosts. */
OK with that change.
Richard.
> + /* [ WORD 2 ]
> + UID of this statement. This is used by passes that want to
> assign IDs to statements. It must be assigned and used by each
> pass. By default it should be assumed to contain garbage. */
> unsigned uid;
>
> - /* [ WORD 2 ]
> - Locus information for debug info. */
> - location_t location;
> -
> /* Number of operands in this tuple. */
> unsigned num_ops;
>
> /* [ WORD 3 ]
> + Locus information for debug info. */
> + location_t location;
> +
> + /* [ WORD 4 ]
> Basic block holding this statement. */
> basic_block bb;
>
> - /* [ WORD 4-5 ]
> + /* [ WORD 5-6 ]
> Linked lists of gimple statements. The next pointers form
> a NULL terminated list, the prev pointers are a cyclic list.
> A gimple statement is hence also a double-ended list of
> @@ -479,7 +483,7 @@ struct GTY((tag("GSS_PHI")))
> /* [ WORD 8 ] */
> tree result;
>
> - /* [ WORD 9 ] */
> + /* [ WORD 9-14 ] */
> struct phi_arg_d GTY ((length ("%h.nargs"))) args[1];
> };
>