FreeBSD/contrib/gcc/cp/mangle.c
/* Return an identifier for a construction vtable group.  TYPE is
   the most derived class in the hierarchy; BINFO is the base
   subobject for which this construction vtable group will be used.

   This mangling isn't part of the ABI specification; in the ABI
   specification, the vtable group is dumped in the same COMDAT as the
   main vtable, and is referenced only from that vtable, so it doesn't
   need an external name.  For binary formats without COMDAT sections,
   though, we need external names for the vtable groups.

   We use the production

    <special-name> ::= CT <type> <offset number> _ <base type>  */
Return an identifier for a construction vtable group.  TYPE is
the most derived class in the hierarchy; BINFO is the base
subobject for which this construction vtable group will be used.

This mangling isn't part of the ABI specification; in the ABI
specification, the vtable group is dumped in the same COMDAT as the
main vtable, and is referenced only from that vtable, so it doesn't
need an external name.  For binary formats without COMDAT sections,
though, we need external names for the vtable groups.

We use the production


Return an identifier for a construction vtable group . TYPE is the most derived class in the hierarchy ; BINFO is the base subobject for which this construction vtable group will be used . This mangling isn ' t part of the ABI specification ; in the ABI specification the vtable group is dumped in the same COMDAT as the main vtable and is referenced only from that vtable so it doesn ' t need an external name . For binary formats without COMDAT sections though we need external names for the vtable groups . We use the production
tree
mangle_ctor_vtbl_for_type (const tree type, const tree binfo)
{
  const char *result;
  start_mangling (type, true);
  write_string ("_Z");
  write_string ("TC");
  write_type (type);
  write_integer_cst (BINFO_OFFSET (binfo));
  write_char ('_');
  write_type (BINFO_TYPE (binfo));
  result = finish_mangling (false);
  if (DEBUG_MANGLE)
    fprintf (stderr, "mangle_ctor_vtbl_for_type = %s\n\n", result);
  return get_identifier_nocopy (result);
}
tree mangle_ctor_vtbl_for_type ( const tree type , const tree binfo ) { const char * result ; start_mangling ( type , true ) ; write_string ( " " ) ; write_string ( " " ) ; write_type ( type ) ; write_integer_cst ( BINFO_OFFSET ( binfo ) ) ; write_char ( ' ' ) ; write_type ( BINFO_TYPE ( binfo ) ) ; result = finish_mangling ( false ) ; if ( DEBUG_MANGLE ) fprintf ( stderr , " \n \n " , result ) ; return get_identifier_nocopy ( result ) ; }
Return an identifier for a construction vtable group.
Return an identifier for a construction vtable group .
/*ident_p=*/ /*warn=*/