FreeBSD/contrib/gcc/cp/class.c
/* Layout all of the non-virtual base classes.  Record empty
   subobjects in OFFSETS.  T is the most derived type.  Return nonzero
   if the type cannot be nearly empty.  The fields created
   corresponding to the base classes will be inserted at
   *NEXT_FIELD.  */
Layout all of the non-virtual base classes.  Record empty
subobjects in OFFSETS.  T is the most derived type.  Return nonzero
if the type cannot be nearly empty.  The fields created
corresponding to the base classes will be inserted at
NEXT_FIELD.
Layout all of the non - virtual base classes . Record empty subobjects in OFFSETS . T is the most derived type . Return nonzero if the type cannot be nearly empty . The fields created corresponding to the base classes will be inserted at NEXT_FIELD .
static void
build_base_fields (record_layout_info rli,
		   splay_tree offsets, tree *next_field)
{
  tree t = rli->t;
  int n_baseclasses = BINFO_N_BASE_BINFOS (TYPE_BINFO (t));
  int i;
  if (CLASSTYPE_HAS_PRIMARY_BASE_P (t))
    next_field = build_base_field (rli, CLASSTYPE_PRIMARY_BINFO (t),
				   offsets, next_field);
  for (i = 0; i < n_baseclasses; ++i)
    {
      tree base_binfo;
      base_binfo = BINFO_BASE_BINFO (TYPE_BINFO (t), i);
      if (base_binfo == CLASSTYPE_PRIMARY_BINFO (t))
	continue;
      if (BINFO_VIRTUAL_P (base_binfo))
	continue;
      next_field = build_base_field (rli, base_binfo,
				     offsets, next_field);
    }
}
static void build_base_fields ( record_layout_info rli , splay_tree offsets , tree * next_field ) { tree t = rli -> t ; int n_baseclasses = BINFO_N_BASE_BINFOS ( TYPE_BINFO ( t ) ) ; int i ; if ( CLASSTYPE_HAS_PRIMARY_BASE_P ( t ) ) next_field = build_base_field ( rli , CLASSTYPE_PRIMARY_BINFO ( t ) , offsets , next_field ) ; for ( i = 0 ; i < n_baseclasses ; ++ i ) { tree base_binfo ; base_binfo = BINFO_BASE_BINFO ( TYPE_BINFO ( t ) , i ) ; if ( base_binfo == CLASSTYPE_PRIMARY_BINFO ( t ) ) continue ; if ( BINFO_VIRTUAL_P ( base_binfo ) ) continue ; next_field = build_base_field ( rli , base_binfo , offsets , next_field ) ; } }
Layout all of the non-virtual base classes.
Layout all of the non - virtual base classes .
/* Chain to hold all the new FIELD_DECLs which stand in for base class
     subobjects.  */ /* The primary base class is always allocated first.  */ /* Now allocate the rest of the bases.  */ /* The primary base was already allocated above, so we don't
	 need to allocate it again here.  */ /* Virtual bases are added at the end (a primary virtual base
	 will have already been added).  */