Commit deda4b76 by Jason Merrill Committed by Jason Merrill

dbxout.c (MINIMAL_DEBUG, [...]): Lose.

        * dbxout.c (MINIMAL_DEBUG, flag_minimal_debug): Lose.
        (dbxout_type_fields): Lose minimal_debug support.
        (dbxout_type_methods, dbxout_type): Likewise.

From-SVN: r42391
parent 7a81cf7f
2001-05-21 Jason Merrill <jason_merrill@redhat.com>
* dbxout.c (MINIMAL_DEBUG, flag_minimal_debug): Lose.
(dbxout_type_fields): Lose minimal_debug support.
(dbxout_type_methods, dbxout_type): Likewise.
2001-05-17 Andrew Haley <aph@redhat.com> 2001-05-17 Andrew Haley <aph@redhat.com>
* config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New. * config/rs6000/linux.h (MD_FALLBACK_FRAME_STATE_FOR): New.
......
...@@ -131,24 +131,11 @@ Boston, MA 02111-1307, USA. */ ...@@ -131,24 +131,11 @@ Boston, MA 02111-1307, USA. */
#define STABS_GCC_MARKER "gcc2_compiled." #define STABS_GCC_MARKER "gcc2_compiled."
#endif #endif
/* Nonzero means if the type has methods, only output debugging /* Typical USG systems don't have stab.h, and they also have
information if methods are actually written to the asm file. This no use for DBX-format debugging info. */
optimization only works if the debugger can detect the special C++
marker. */
#define MINIMAL_DEBUG 1
#ifdef NO_DOLLAR_IN_LABEL
#ifdef NO_DOT_IN_LABEL
#undef MINIMAL_DEBUG
#define MINIMAL_DEBUG 0
#endif
#endif
#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO) #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
static int flag_minimal_debug = MINIMAL_DEBUG;
/* Nonzero if we have actually used any of the GDB extensions /* Nonzero if we have actually used any of the GDB extensions
to the debugging format. The idea is that we use them for the to the debugging format. The idea is that we use them for the
first time only if there's a strong reason, but once we have done that, first time only if there's a strong reason, but once we have done that,
...@@ -308,7 +295,7 @@ static void dbxout_type_fields PARAMS ((tree)); ...@@ -308,7 +295,7 @@ static void dbxout_type_fields PARAMS ((tree));
static void dbxout_type_method_1 PARAMS ((tree, const char *)); static void dbxout_type_method_1 PARAMS ((tree, const char *));
static void dbxout_type_methods PARAMS ((tree)); static void dbxout_type_methods PARAMS ((tree));
static void dbxout_range_type PARAMS ((tree)); static void dbxout_range_type PARAMS ((tree));
static void dbxout_type PARAMS ((tree, int, int)); static void dbxout_type PARAMS ((tree, int));
static void print_int_cst_octal PARAMS ((tree)); static void print_int_cst_octal PARAMS ((tree));
static void print_octal PARAMS ((unsigned HOST_WIDE_INT, int)); static void print_octal PARAMS ((unsigned HOST_WIDE_INT, int));
static void dbxout_type_name PARAMS ((tree)); static void dbxout_type_name PARAMS ((tree));
...@@ -628,25 +615,6 @@ dbxout_type_fields (type) ...@@ -628,25 +615,6 @@ dbxout_type_fields (type)
if (tem != TYPE_FIELDS (type)) if (tem != TYPE_FIELDS (type))
CONTIN; CONTIN;
if (use_gnu_debug_info_extensions
&& flag_minimal_debug
&& TREE_CODE (tem) == FIELD_DECL
&& DECL_VIRTUAL_P (tem)
&& DECL_ASSEMBLER_NAME (tem))
{
have_used_extensions = 1;
CHARS (3 + IDENTIFIER_LENGTH (DECL_ASSEMBLER_NAME (tem)));
fputs (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (tem)), asmfile);
dbxout_type (DECL_FCONTEXT (tem), 0, 0);
fprintf (asmfile, ":");
dbxout_type (TREE_TYPE (tem), 0, 0);
fputc (',', asmfile);
fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
int_bit_position (tem));
fputc (';', asmfile);
continue;
}
if (DECL_NAME (tem)) if (DECL_NAME (tem))
{ {
fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (tem))); fprintf (asmfile, "%s:", IDENTIFIER_POINTER (DECL_NAME (tem)));
...@@ -672,7 +640,7 @@ dbxout_type_fields (type) ...@@ -672,7 +640,7 @@ dbxout_type_fields (type)
dbxout_type ((TREE_CODE (tem) == FIELD_DECL dbxout_type ((TREE_CODE (tem) == FIELD_DECL
&& DECL_BIT_FIELD_TYPE (tem)) && DECL_BIT_FIELD_TYPE (tem))
? DECL_BIT_FIELD_TYPE (tem) : TREE_TYPE (tem), 0, 0); ? DECL_BIT_FIELD_TYPE (tem) : TREE_TYPE (tem), 0);
if (TREE_CODE (tem) == VAR_DECL) if (TREE_CODE (tem) == VAR_DECL)
{ {
...@@ -746,7 +714,7 @@ dbxout_type_method_1 (decl, debug_name) ...@@ -746,7 +714,7 @@ dbxout_type_method_1 (decl, debug_name)
fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
tree_low_cst (DECL_VINDEX (decl), 0)); tree_low_cst (DECL_VINDEX (decl), 0));
fputc (';', asmfile); fputc (';', asmfile);
dbxout_type (DECL_CONTEXT (decl), 0, 0); dbxout_type (DECL_CONTEXT (decl), 0);
fprintf (asmfile, ";"); fprintf (asmfile, ";");
CHARS (8); CHARS (8);
} }
...@@ -792,7 +760,7 @@ dbxout_type_methods (type) ...@@ -792,7 +760,7 @@ dbxout_type_methods (type)
type_identifier_length = IDENTIFIER_LENGTH (type_encoding); type_identifier_length = IDENTIFIER_LENGTH (type_encoding);
sprintf(formatted_type_identifier_length, "%d", type_identifier_length); sprintf (formatted_type_identifier_length, "%d", type_identifier_length);
if (TREE_CODE (methods) != TREE_VEC) if (TREE_CODE (methods) != TREE_VEC)
fndecl = methods; fndecl = methods;
...@@ -803,9 +771,6 @@ dbxout_type_methods (type) ...@@ -803,9 +771,6 @@ dbxout_type_methods (type)
while (fndecl) while (fndecl)
{ {
tree name = DECL_NAME (fndecl);
int need_prefix = 1;
/* Group together all the methods for the same operation. /* Group together all the methods for the same operation.
These differ in the types of the arguments. */ These differ in the types of the arguments. */
for (last = NULL_TREE; for (last = NULL_TREE;
...@@ -818,7 +783,6 @@ dbxout_type_methods (type) ...@@ -818,7 +783,6 @@ dbxout_type_methods (type)
/* This is the "mangled" name of the method. /* This is the "mangled" name of the method.
It encodes the argument types. */ It encodes the argument types. */
const char *debug_name; const char *debug_name;
int show_arg_types = 0;
/* Skip methods that aren't FUNCTION_DECLs. (In C++, these /* Skip methods that aren't FUNCTION_DECLs. (In C++, these
include TEMPLATE_DECLs.) The debugger doesn't know what include TEMPLATE_DECLs.) The debugger doesn't know what
...@@ -838,82 +802,10 @@ dbxout_type_methods (type) ...@@ -838,82 +802,10 @@ dbxout_type_methods (type)
if (DECL_IGNORED_P (fndecl) || DECL_ABSTRACT (fndecl)) if (DECL_IGNORED_P (fndecl) || DECL_ABSTRACT (fndecl))
continue; continue;
if (flag_minimal_debug) dbxout_type (TREE_TYPE (fndecl), 0);
{
char marker;
/* We can't optimize a method which uses an anonymous
class, because the debugger will not be able to
associate the arbitrary class name with the actual
class. */
#ifndef NO_DOLLAR_IN_LABEL
marker = '$';
#else
marker = '.';
#endif
if (strchr (debug_name, marker))
show_arg_types = 1;
/* Detect ordinary methods because their mangled names
start with the operation name. */
else if (!strncmp (IDENTIFIER_POINTER (name), debug_name,
IDENTIFIER_LENGTH (name)))
{
debug_name += IDENTIFIER_LENGTH (name);
if (debug_name[0] == '_' && debug_name[1] == '_')
{
const char *method_name = debug_name + 2;
const char *length_ptr =
formatted_type_identifier_length;
/* Get past const and volatile qualifiers. */
while (*method_name == 'C' || *method_name == 'V')
method_name++;
/* Skip digits for length of type_encoding. */
while (*method_name == *length_ptr && *length_ptr)
length_ptr++, method_name++;
if (! strncmp (method_name,
IDENTIFIER_POINTER (type_encoding),
type_identifier_length))
method_name += type_identifier_length;
debug_name = method_name;
}
}
/* Detect constructors by their style of name mangling. */
else if (debug_name[0] == '_' && debug_name[1] == '_')
{
const char *ctor_name = debug_name + 2;
const char *length_ptr = formatted_type_identifier_length;
while (*ctor_name == 'C' || *ctor_name == 'V')
ctor_name++;
/* Skip digits for length of type_encoding. */
while (*ctor_name == *length_ptr && *length_ptr)
length_ptr++, ctor_name++;
if (!strncmp (IDENTIFIER_POINTER (type_encoding), ctor_name,
type_identifier_length))
debug_name = ctor_name + type_identifier_length;
}
/* The other alternative is a destructor. */
else
show_arg_types = 1;
/* Output the operation name just once, for the first method
that we output. */
if (need_prefix)
{
fprintf (asmfile, "%s::", IDENTIFIER_POINTER (name));
CHARS (IDENTIFIER_LENGTH (name) + 2);
need_prefix = 0;
}
}
dbxout_type (TREE_TYPE (fndecl), 0, show_arg_types);
dbxout_type_method_1 (fndecl, debug_name); dbxout_type_method_1 (fndecl, debug_name);
} }
if (!need_prefix)
{
putc (';', asmfile);
CHARS (1);
}
} }
} }
...@@ -927,9 +819,9 @@ dbxout_range_type (type) ...@@ -927,9 +819,9 @@ dbxout_range_type (type)
{ {
fprintf (asmfile, "r"); fprintf (asmfile, "r");
if (TREE_TYPE (type)) if (TREE_TYPE (type))
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
else if (TREE_CODE (type) != INTEGER_TYPE) else if (TREE_CODE (type) != INTEGER_TYPE)
dbxout_type (type, 0, 0); /* E.g. Pascal's ARRAY [BOOLEAN] of INTEGER */ dbxout_type (type, 0); /* E.g. Pascal's ARRAY [BOOLEAN] of INTEGER */
else else
{ {
/* Traditionally, we made sure 'int' was type 1, and builtin types /* Traditionally, we made sure 'int' was type 1, and builtin types
...@@ -980,16 +872,12 @@ dbxout_range_type (type) ...@@ -980,16 +872,12 @@ dbxout_range_type (type)
If FULL is nonzero, and the type has been described only with If FULL is nonzero, and the type has been described only with
a forward-reference, output the definition now. a forward-reference, output the definition now.
If FULL is zero in this case, just refer to the forward-reference If FULL is zero in this case, just refer to the forward-reference
using the number previously allocated. using the number previously allocated. */
If SHOW_ARG_TYPES is nonzero, we output a description of the argument
types for a METHOD_TYPE. */
static void static void
dbxout_type (type, full, show_arg_types) dbxout_type (type, full)
tree type; tree type;
int full; int full;
int show_arg_types;
{ {
register tree tem; register tree tem;
static int anonymous_type_number = 0; static int anonymous_type_number = 0;
...@@ -1114,7 +1002,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1114,7 +1002,7 @@ dbxout_type (type, full, show_arg_types)
if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
&& DECL_ORIGINAL_TYPE (TYPE_NAME (type))) && DECL_ORIGINAL_TYPE (TYPE_NAME (type)))
{ {
dbxout_type (DECL_ORIGINAL_TYPE (TYPE_NAME (type)), 0, 0); dbxout_type (DECL_ORIGINAL_TYPE (TYPE_NAME (type)), 0);
return; return;
} }
...@@ -1246,7 +1134,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1246,7 +1134,7 @@ dbxout_type (type, full, show_arg_types)
case FILE_TYPE: case FILE_TYPE:
putc ('d', asmfile); putc ('d', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
break; break;
case COMPLEX_TYPE: case COMPLEX_TYPE:
...@@ -1271,13 +1159,13 @@ dbxout_type (type, full, show_arg_types) ...@@ -1271,13 +1159,13 @@ dbxout_type (type, full, show_arg_types)
fprintf (asmfile, "real:"); fprintf (asmfile, "real:");
CHARS (10); CHARS (10);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
fprintf (asmfile, ",%d,%d;", fprintf (asmfile, ",%d,%d;",
0, TYPE_PRECISION (TREE_TYPE (type))); 0, TYPE_PRECISION (TREE_TYPE (type)));
CHARS (8); CHARS (8);
fprintf (asmfile, "imag:"); fprintf (asmfile, "imag:");
CHARS (5); CHARS (5);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
fprintf (asmfile, ",%d,%d;;", fprintf (asmfile, ",%d,%d;;",
TYPE_PRECISION (TREE_TYPE (type)), TYPE_PRECISION (TREE_TYPE (type)),
TYPE_PRECISION (TREE_TYPE (type))); TYPE_PRECISION (TREE_TYPE (type)));
...@@ -1300,7 +1188,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1300,7 +1188,7 @@ dbxout_type (type, full, show_arg_types)
} }
putc ('S', asmfile); putc ('S', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TYPE_DOMAIN (type), 0, 0); dbxout_type (TYPE_DOMAIN (type), 0);
break; break;
case ARRAY_TYPE: case ARRAY_TYPE:
...@@ -1315,7 +1203,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1315,7 +1203,7 @@ dbxout_type (type, full, show_arg_types)
fprintf (asmfile, "@S;"); fprintf (asmfile, "@S;");
putc ('S', asmfile); putc ('S', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TYPE_DOMAIN (type), 0, 0); dbxout_type (TYPE_DOMAIN (type), 0);
break; break;
} }
/* Output "a" followed by a range type definition /* Output "a" followed by a range type definition
...@@ -1342,7 +1230,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1342,7 +1230,7 @@ dbxout_type (type, full, show_arg_types)
dbxout_range_type (tem); dbxout_range_type (tem);
} }
CHARS (14); CHARS (14);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
break; break;
case RECORD_TYPE: case RECORD_TYPE:
...@@ -1419,7 +1307,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1419,7 +1307,7 @@ dbxout_type (type, full, show_arg_types)
* BITS_PER_UNIT)); * BITS_PER_UNIT));
fputc (',', asmfile); fputc (',', asmfile);
CHARS (15); CHARS (15);
dbxout_type (BINFO_TYPE (child), 0, 0); dbxout_type (BINFO_TYPE (child), 0);
putc (';', asmfile); putc (';', asmfile);
} }
else else
...@@ -1428,7 +1316,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1428,7 +1316,7 @@ dbxout_type (type, full, show_arg_types)
which have the same names at the types they hold. */ which have the same names at the types they hold. */
dbxout_type_name (BINFO_TYPE (child)); dbxout_type_name (BINFO_TYPE (child));
putc (':', asmfile); putc (':', asmfile);
dbxout_type (BINFO_TYPE (child), full, 0); dbxout_type (BINFO_TYPE (child), full);
fputc (',', asmfile); fputc (',', asmfile);
fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC, fprintf (asmfile, HOST_WIDE_INT_PRINT_DEC,
tree_low_cst (BINFO_OFFSET (child), 0) tree_low_cst (BINFO_OFFSET (child), 0)
...@@ -1472,7 +1360,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1472,7 +1360,7 @@ dbxout_type (type, full, show_arg_types)
if (TYPE_VFIELD (type)) if (TYPE_VFIELD (type))
{ {
putc ('%', asmfile); putc ('%', asmfile);
dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0, 0); dbxout_type (DECL_FCONTEXT (TYPE_VFIELD (type)), 0);
} }
putc (';', asmfile); putc (';', asmfile);
CHARS (3); CHARS (3);
...@@ -1531,7 +1419,7 @@ dbxout_type (type, full, show_arg_types) ...@@ -1531,7 +1419,7 @@ dbxout_type (type, full, show_arg_types)
case POINTER_TYPE: case POINTER_TYPE:
putc ('*', asmfile); putc ('*', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
break; break;
case METHOD_TYPE: case METHOD_TYPE:
...@@ -1540,33 +1428,20 @@ dbxout_type (type, full, show_arg_types) ...@@ -1540,33 +1428,20 @@ dbxout_type (type, full, show_arg_types)
have_used_extensions = 1; have_used_extensions = 1;
putc ('#', asmfile); putc ('#', asmfile);
CHARS (1); CHARS (1);
if (flag_minimal_debug && !show_arg_types)
{ /* Write the argument types out longhand. */
/* Normally, just output the return type. dbxout_type (TYPE_METHOD_BASETYPE (type), 0);
The argument types are encoded in the method name. */ putc (',', asmfile);
putc ('#', asmfile); CHARS (1);
CHARS (1); dbxout_type (TREE_TYPE (type), 0);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_args (TYPE_ARG_TYPES (type));
putc (';', asmfile); putc (';', asmfile);
CHARS (1); CHARS (1);
}
else
{
/* When outputting destructors, we need to write
the argument types out longhand. */
dbxout_type (TYPE_METHOD_BASETYPE (type), 0, 0);
putc (',', asmfile);
CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0);
dbxout_args (TYPE_ARG_TYPES (type));
putc (';', asmfile);
CHARS (1);
}
} }
else else
{ {
/* Treat it as a function type. */ /* Treat it as a function type. */
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
} }
break; break;
...@@ -1576,16 +1451,16 @@ dbxout_type (type, full, show_arg_types) ...@@ -1576,16 +1451,16 @@ dbxout_type (type, full, show_arg_types)
have_used_extensions = 1; have_used_extensions = 1;
putc ('@', asmfile); putc ('@', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TYPE_OFFSET_BASETYPE (type), 0, 0); dbxout_type (TYPE_OFFSET_BASETYPE (type), 0);
putc (',', asmfile); putc (',', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
} }
else else
{ {
/* Should print as an int, because it is really /* Should print as an int, because it is really
just an offset. */ just an offset. */
dbxout_type (integer_type_node, 0, 0); dbxout_type (integer_type_node, 0);
} }
break; break;
...@@ -1594,13 +1469,13 @@ dbxout_type (type, full, show_arg_types) ...@@ -1594,13 +1469,13 @@ dbxout_type (type, full, show_arg_types)
have_used_extensions = 1; have_used_extensions = 1;
putc (use_gnu_debug_info_extensions ? '&' : '*', asmfile); putc (use_gnu_debug_info_extensions ? '&' : '*', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
break; break;
case FUNCTION_TYPE: case FUNCTION_TYPE:
putc ('f', asmfile); putc ('f', asmfile);
CHARS (1); CHARS (1);
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
break; break;
default: default:
...@@ -1755,9 +1630,9 @@ dbxout_symbol (decl, local) ...@@ -1755,9 +1630,9 @@ dbxout_symbol (decl, local)
current_sym_addr = XEXP (DECL_RTL (decl), 0); current_sym_addr = XEXP (DECL_RTL (decl), 0);
if (TREE_TYPE (type)) if (TREE_TYPE (type))
dbxout_type (TREE_TYPE (type), 0, 0); dbxout_type (TREE_TYPE (type), 0);
else else
dbxout_type (void_type_node, 0, 0); dbxout_type (void_type_node, 0);
/* For a nested function, when that function is compiled, /* For a nested function, when that function is compiled,
mention the containing function name mention the containing function name
...@@ -1828,7 +1703,7 @@ dbxout_symbol (decl, local) ...@@ -1828,7 +1703,7 @@ dbxout_symbol (decl, local)
fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP, fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP,
IDENTIFIER_POINTER (name)); IDENTIFIER_POINTER (name));
dbxout_type (type, 1, 0); dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE); dbxout_finish_symbol (NULL_TREE);
} }
...@@ -1859,7 +1734,7 @@ dbxout_symbol (decl, local) ...@@ -1859,7 +1734,7 @@ dbxout_symbol (decl, local)
putc ('t', asmfile); putc ('t', asmfile);
current_sym_code = DBX_TYPE_DECL_STABS_CODE; current_sym_code = DBX_TYPE_DECL_STABS_CODE;
dbxout_type (type, 1, 0); dbxout_type (type, 1);
dbxout_finish_symbol (decl); dbxout_finish_symbol (decl);
did_output = 1; did_output = 1;
} }
...@@ -1889,7 +1764,7 @@ dbxout_symbol (decl, local) ...@@ -1889,7 +1764,7 @@ dbxout_symbol (decl, local)
fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP, fprintf (asmfile, "%s\"%s:T", ASM_STABS_OP,
IDENTIFIER_POINTER (name)); IDENTIFIER_POINTER (name));
dbxout_type (type, 1, 0); dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE); dbxout_finish_symbol (NULL_TREE);
did_output = 1; did_output = 1;
} }
...@@ -1907,7 +1782,7 @@ dbxout_symbol (decl, local) ...@@ -1907,7 +1782,7 @@ dbxout_symbol (decl, local)
/* Some debuggers fail when given NULL names, so give this a /* Some debuggers fail when given NULL names, so give this a
harmless name of ` '. */ harmless name of ` '. */
fprintf (asmfile, "%s\" :T", ASM_STABS_OP); fprintf (asmfile, "%s\" :T", ASM_STABS_OP);
dbxout_type (type, 1, 0); dbxout_type (type, 1);
dbxout_finish_symbol (NULL_TREE); dbxout_finish_symbol (NULL_TREE);
} }
...@@ -2196,7 +2071,7 @@ dbxout_symbol_location (decl, type, suffix, home) ...@@ -2196,7 +2071,7 @@ dbxout_symbol_location (decl, type, suffix, home)
#endif #endif
dbxout_symbol_name (decl, suffix, letter); dbxout_symbol_name (decl, suffix, letter);
dbxout_type (type, 0, 0); dbxout_type (type, 0);
dbxout_finish_symbol (decl); dbxout_finish_symbol (decl);
#ifdef DBX_STATIC_BLOCK_END #ifdef DBX_STATIC_BLOCK_END
...@@ -2351,7 +2226,7 @@ dbxout_parms (parms) ...@@ -2351,7 +2226,7 @@ dbxout_parms (parms)
/* It is quite tempting to use: /* It is quite tempting to use:
dbxout_type (TREE_TYPE (parms), 0, 0); dbxout_type (TREE_TYPE (parms), 0);
as the next statement, rather than using DECL_ARG_TYPE(), so as the next statement, rather than using DECL_ARG_TYPE(), so
that gcc reports the actual type of the parameter, rather that gcc reports the actual type of the parameter, rather
...@@ -2363,7 +2238,7 @@ dbxout_parms (parms) ...@@ -2363,7 +2238,7 @@ dbxout_parms (parms)
double on the stack, but if we emit a stab saying the type is a double on the stack, but if we emit a stab saying the type is a
float, then gdb will only read in a single value, and this will float, then gdb will only read in a single value, and this will
produce an erropneous value. */ produce an erropneous value. */
dbxout_type (DECL_ARG_TYPE (parms), 0, 0); dbxout_type (DECL_ARG_TYPE (parms), 0);
current_sym_value = DEBUGGER_ARG_OFFSET (current_sym_value, addr); current_sym_value = DEBUGGER_ARG_OFFSET (current_sym_value, addr);
dbxout_finish_symbol (parms); dbxout_finish_symbol (parms);
} }
...@@ -2414,7 +2289,7 @@ dbxout_parms (parms) ...@@ -2414,7 +2289,7 @@ dbxout_parms (parms)
regparm_letter); regparm_letter);
} }
dbxout_type (parm_type, 0, 0); dbxout_type (parm_type, 0);
dbxout_finish_symbol (parms); dbxout_finish_symbol (parms);
} }
else if (GET_CODE (DECL_RTL (parms)) == MEM else if (GET_CODE (DECL_RTL (parms)) == MEM
...@@ -2467,7 +2342,7 @@ dbxout_parms (parms) ...@@ -2467,7 +2342,7 @@ dbxout_parms (parms)
regparm_letter); regparm_letter);
} }
dbxout_type (TREE_TYPE (parms), 0, 0); dbxout_type (TREE_TYPE (parms), 0);
dbxout_finish_symbol (parms); dbxout_finish_symbol (parms);
} }
else if (GET_CODE (DECL_RTL (parms)) == MEM else if (GET_CODE (DECL_RTL (parms)) == MEM
...@@ -2489,7 +2364,7 @@ dbxout_parms (parms) ...@@ -2489,7 +2364,7 @@ dbxout_parms (parms)
FORCE_TEXT; FORCE_TEXT;
fprintf (asmfile, "%s\"%s:v", ASM_STABS_OP, decl_name); fprintf (asmfile, "%s\"%s:v", ASM_STABS_OP, decl_name);
dbxout_type (TREE_TYPE (parms), 0, 0); dbxout_type (TREE_TYPE (parms), 0);
dbxout_finish_symbol (parms); dbxout_finish_symbol (parms);
} }
else if (GET_CODE (DECL_RTL (parms)) == MEM else if (GET_CODE (DECL_RTL (parms)) == MEM
...@@ -2545,7 +2420,7 @@ dbxout_parms (parms) ...@@ -2545,7 +2420,7 @@ dbxout_parms (parms)
current_sym_value current_sym_value
= DEBUGGER_ARG_OFFSET (current_sym_value, = DEBUGGER_ARG_OFFSET (current_sym_value,
XEXP (DECL_RTL (parms), 0)); XEXP (DECL_RTL (parms), 0));
dbxout_type (TREE_TYPE (parms), 0, 0); dbxout_type (TREE_TYPE (parms), 0);
dbxout_finish_symbol (parms); dbxout_finish_symbol (parms);
} }
} }
...@@ -2598,7 +2473,7 @@ dbxout_args (args) ...@@ -2598,7 +2473,7 @@ dbxout_args (args)
while (args) while (args)
{ {
putc (',', asmfile); putc (',', asmfile);
dbxout_type (TREE_VALUE (args), 0, 0); dbxout_type (TREE_VALUE (args), 0);
CHARS (1); CHARS (1);
args = TREE_CHAIN (args); args = TREE_CHAIN (args);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment