contrib/gcc-4.7/gcc/cp/class.c
/* When building a secondary VTT, BINFO_VTABLE is set to a TREE_LIST with
   PURPOSE the RTTI_BINFO, VALUE the real vtable pointer for this binfo,
   and CHAIN the vtable pointer for this binfo after construction is
   complete.  VALUE can also be another BINFO, in which case we recurse.  */
When building a secondary VTT, BINFO_VTABLE is set to a TREE_LIST with
PURPOSE the RTTI_BINFO, VALUE the real vtable pointer for this binfo,
and CHAIN the vtable pointer for this binfo after construction is
complete.  VALUE can also be another BINFO, in which case we recurse.
When building a secondary VTT BINFO_VTABLE is set to a TREE_LIST with PURPOSE the RTTI_BINFO VALUE the real vtable pointer for this binfo and CHAIN the vtable pointer for this binfo after construction is complete . VALUE can also be another BINFO in which case we recurse .
static tree
binfo_ctor_vtable (tree binfo)
{
  tree vt;
  while (1)
    {
      vt = BINFO_VTABLE (binfo);
      if (TREE_CODE (vt) == TREE_LIST)
	vt = TREE_VALUE (vt);
      if (TREE_CODE (vt) == TREE_BINFO)
	binfo = vt;
      else
	break;
    }
  return vt;
}
static tree binfo_ctor_vtable ( tree binfo ) { tree vt ; while ( 1 ) { vt = BINFO_VTABLE ( binfo ) ; if ( TREE_CODE ( vt ) == TREE_LIST ) vt = TREE_VALUE ( vt ) ; if ( TREE_CODE ( vt ) == TREE_BINFO ) binfo = vt ; else break ; } return vt ; }
When building a secondary VTT, BINFO_VTABLE is set to a TREE_LIST with
PURPOSE the RTTI_BINFO, VALUE the real vtable pointer for this binfo,
and CHAIN the vtable pointer for this binfo after construction is
complete.
When building a secondary VTT BINFO_VTABLE is set to a TREE_LIST with PURPOSE the RTTI_BINFO VALUE the real vtable pointer for this binfo and CHAIN the vtable pointer for this binfo after construction is complete .