contrib/gcc-4.7/gcc/cp/mangle.c
/* Handle destructor productions of non-terminal <special-name>.
   DTOR is a destructor FUNCTION_DECL.

     <special-name> ::= D0 # deleting (in-charge) destructor
		    ::= D1 # complete object (in-charge) destructor
		    ::= D2 # base object (not-in-charge) destructor

   We also need to provide mangled names for the maybe-incharge
   destructor, so we treat it here too.  mangle_decl_string will
   append *INTERNAL* to that, to make sure we never emit it.  */
Handle destructor productions of non-terminal .
DTOR is a destructor FUNCTION_DECL.



We also need to provide mangled names for the maybe-incharge
destructor, so we treat it here too.  mangle_decl_string will
append *INTERNAL* to that, to make sure we never emit it.
Handle destructor productions of non - terminal . DTOR is a destructor FUNCTION_DECL . We also need to provide mangled names for the maybe - incharge destructor so we treat it here too . mangle_decl_string will append * INTERNAL * to that to make sure we never emit it .
static void
write_special_name_destructor (const tree dtor)
{
  if (DECL_DELETING_DESTRUCTOR_P (dtor))
    write_string ("D0");
  else if (DECL_BASE_DESTRUCTOR_P (dtor))
    write_string ("D2");
  else
    {
      gcc_assert (DECL_COMPLETE_DESTRUCTOR_P (dtor)
		  || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (dtor));
      write_string ("D1");
    }
}
static void write_special_name_destructor ( const tree dtor ) { if ( DECL_DELETING_DESTRUCTOR_P ( dtor ) ) write_string ( " " ) ; else if ( DECL_BASE_DESTRUCTOR_P ( dtor ) ) write_string ( " " ) ; else { gcc_assert ( DECL_COMPLETE_DESTRUCTOR_P ( dtor ) || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P ( dtor ) ) ; write_string ( " " ) ; } }
Handle destructor productions of non-terminal <special-name>.
Handle destructor productions of non - terminal <special - name > .
/* Even though we don't ever emit a definition of
		     the old-style destructor, we still have to
		     consider entities (like static variables) nested
		     inside it.  */