FreeBSD/contrib/gcc/cp/class.c
/* Build vcall offsets, starting with those for BINFO.  */
Build vcall offsets, starting with those for BINFO.
Build vcall offsets starting with those for BINFO .
static void
add_vcall_offset_vtbl_entries_r (tree binfo, vtbl_init_data* vid)
{
  int i;
  tree primary_binfo;
  tree base_binfo;
  if (BINFO_VIRTUAL_P (binfo) && vid->vbase != binfo)
    return;
  primary_binfo = get_primary_binfo (binfo);
  if (primary_binfo)
    add_vcall_offset_vtbl_entries_r (primary_binfo, vid);
  add_vcall_offset_vtbl_entries_1 (binfo, vid);
  for (i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); ++i)
    if (base_binfo != primary_binfo)
      add_vcall_offset_vtbl_entries_r (base_binfo, vid);
}
static void add_vcall_offset_vtbl_entries_r ( tree binfo , vtbl_init_data * vid ) { int i ; tree primary_binfo ; tree base_binfo ; if ( BINFO_VIRTUAL_P ( binfo ) && vid -> vbase != binfo ) return ; primary_binfo = get_primary_binfo ( binfo ) ; if ( primary_binfo ) add_vcall_offset_vtbl_entries_r ( primary_binfo , vid ) ; add_vcall_offset_vtbl_entries_1 ( binfo , vid ) ; for ( i = 0 ; BINFO_BASE_ITERATE ( binfo , i , base_binfo ) ; ++ i ) if ( base_binfo != primary_binfo ) add_vcall_offset_vtbl_entries_r ( base_binfo , vid ) ; }
Build vcall offsets, starting with those for BINFO.
Build vcall offsets starting with those for BINFO .
/* Don't walk into virtual bases -- except, of course, for the
     virtual base for which we are building vcall offsets.  Any
     primary virtual base will have already had its offsets generated
     through the recursion in build_vcall_and_vbase_vtbl_entries.  */ /* If BINFO has a primary base, process it first.  */ /* Add BINFO itself to the list.  */ /* Scan the non-primary bases of BINFO.  */