FreeBSD/contrib/gcc/cp/class.c
/* Record all of the empty subobjects of TYPE (either a type or a
   binfo).  If IS_DATA_MEMBER is true, then a non-static data member
   is being placed at OFFSET; otherwise, it is a base class that is
   being placed at OFFSET.  */
Record all of the empty subobjects of TYPE (either a type or a
binfo).  If IS_DATA_MEMBER is true, then a non-static data member
is being placed at OFFSET; otherwise, it is a base class that is
being placed at OFFSET.
Record all of the empty subobjects of TYPE ( either a type or a binfo ) . If IS_DATA_MEMBER is true then a non - static data member is being placed at OFFSET ; otherwise it is a base class that is being placed at OFFSET .
static void
record_subobject_offsets (tree type,
			  tree offset,
			  splay_tree offsets,
			  bool is_data_member)
{
  tree max_offset;
  if (is_data_member
      || !is_empty_class (BINFO_TYPE (type)))
    max_offset = sizeof_biggest_empty_class;
  else
    max_offset = NULL_TREE;
  walk_subobject_offsets (type, record_subobject_offset, offset,
			  offsets, max_offset, is_data_member);
}
static void record_subobject_offsets ( tree type , tree offset , splay_tree offsets , bool is_data_member ) { tree max_offset ; if ( is_data_member || ! is_empty_class ( BINFO_TYPE ( type ) ) ) max_offset = sizeof_biggest_empty_class ; else max_offset = NULL_TREE ; walk_subobject_offsets ( type , record_subobject_offset , offset , offsets , max_offset , is_data_member ) ; }
Record all of the empty subobjects of TYPE (either a type or a
binfo).
Record all of the empty subobjects of TYPE ( either a type or a binfo ) .
/* If recording subobjects for a non-static data member or a
     non-empty base class , we do not need to record offsets beyond
     the size of the biggest empty class.  Additional data members
     will go at the end of the class.  Additional base classes will go
     either at offset zero (if empty, in which case they cannot
     overlap with offsets past the size of the biggest empty class) or
     at the end of the class.

     However, if we are placing an empty base class, then we must record
     all offsets, as either the empty class is at offset zero (where
     other empty classes might later be placed) or at the end of the
     class (where other objects might then be placed, so other empty
     subobjects might later overlap).  */