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; + + /* [ 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]; };