From a1d45d09a65ffb9c2cf241de759f4847ee05449e Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 4 Jun 1998 00:34:57 +0000 Subject: * method.c (make_thunk): Use overload machinery to make name. * search.c (covariant_return_p): New fn. (get_matching_virtual): Use it. * init.c (build_new_1): Fix check for void. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20215 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/method.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'gcc/cp/method.c') diff --git a/gcc/cp/method.c b/gcc/cp/method.c index effaf333d83..cc01371a5c6 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1917,23 +1917,30 @@ make_thunk (function, delta) tree function; int delta; { - char *buffer; tree thunk_id; tree thunk; - char *func_name; tree func_decl; + if (TREE_CODE (function) != ADDR_EXPR) abort (); func_decl = TREE_OPERAND (function, 0); if (TREE_CODE (func_decl) != FUNCTION_DECL) abort (); - func_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (func_decl)); - buffer = (char *)alloca (strlen (func_name) + 32); - if (delta<=0) - sprintf (buffer, "__thunk_%d_%s", -delta, func_name); + + OB_INIT (); + OB_PUTS ("__thunk_"); + if (delta > 0) + { + OB_PUTC ('n'); + icat (delta); + } else - sprintf (buffer, "__thunk_n%d_%s", delta, func_name); - thunk_id = get_identifier (buffer); + icat (-delta); + OB_PUTC ('_'); + OB_PUTID (DECL_ASSEMBLER_NAME (func_decl)); + OB_FINISH (); + thunk_id = get_identifier (obstack_base (&scratch_obstack)); + thunk = IDENTIFIER_GLOBAL_VALUE (thunk_id); if (thunk && TREE_CODE (thunk) != THUNK_DECL) { -- cgit v1.2.3