re PR debug/40990 (bad .debug_pubnames entry from gcj)
Fix PR debug/40990 PR debug/40990 * lang.c (put_decl_node): Outputs different level of information depending on the verbosity level. From-SVN: r150677
This commit is contained in:
parent
a4eaf75d60
commit
188c747e11
|
@ -1,3 +1,9 @@
|
|||
2009-08-11 Dodji Seketeli <dodji@redhat.com>
|
||||
|
||||
PR debug/40990
|
||||
* lang.c (put_decl_node): Outputs different level of information
|
||||
depending on the verbosity level.
|
||||
|
||||
2009-07-22 Release Manager
|
||||
|
||||
* GCC 4.4.1 released.
|
||||
|
|
|
@ -53,7 +53,7 @@ static bool java_post_options (const char **);
|
|||
|
||||
static int java_handle_option (size_t scode, const char *arg, int value);
|
||||
static void put_decl_string (const char *, int);
|
||||
static void put_decl_node (tree);
|
||||
static void put_decl_node (tree, int);
|
||||
static void java_print_error_function (diagnostic_context *, const char *,
|
||||
diagnostic_info *);
|
||||
static int merge_init_test_initialization (void * *, void *);
|
||||
|
@ -355,10 +355,13 @@ put_decl_string (const char *str, int len)
|
|||
decl_bufpos += len;
|
||||
}
|
||||
|
||||
/* Append to decl_buf a printable name for NODE. */
|
||||
/* Append to decl_buf a printable name for NODE.
|
||||
Depending on VERBOSITY, more information about NODE
|
||||
is printed. Read the comments of decl_printable_name in
|
||||
langhooks.h for more. */
|
||||
|
||||
static void
|
||||
put_decl_node (tree node)
|
||||
put_decl_node (tree node, int verbosity)
|
||||
{
|
||||
int was_pointer = 0;
|
||||
if (TREE_CODE (node) == POINTER_TYPE)
|
||||
|
@ -370,17 +373,32 @@ put_decl_node (tree node)
|
|||
{
|
||||
if (TREE_CODE (node) == FUNCTION_DECL)
|
||||
{
|
||||
if (verbosity == 0 && DECL_NAME (node))
|
||||
/* We have been instructed to just print the bare name
|
||||
of the function. */
|
||||
{
|
||||
put_decl_node (DECL_NAME (node), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
/* We want to print the type the DECL belongs to. We don't do
|
||||
that when we handle constructors. */
|
||||
if (! DECL_CONSTRUCTOR_P (node)
|
||||
&& ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node))
|
||||
&& ! DECL_ARTIFICIAL (node) && DECL_CONTEXT (node)
|
||||
/* We want to print qualified DECL names only
|
||||
if verbosity is higher than 1. */
|
||||
&& verbosity >= 1)
|
||||
{
|
||||
put_decl_node (TYPE_NAME (DECL_CONTEXT (node)));
|
||||
put_decl_node (TYPE_NAME (DECL_CONTEXT (node)),
|
||||
verbosity);
|
||||
put_decl_string (".", 1);
|
||||
}
|
||||
if (! DECL_CONSTRUCTOR_P (node))
|
||||
put_decl_node (DECL_NAME (node));
|
||||
if (TREE_TYPE (node) != NULL_TREE)
|
||||
put_decl_node (DECL_NAME (node), verbosity);
|
||||
if (TREE_TYPE (node) != NULL_TREE
|
||||
/* We want to print function parameters only if verbosity
|
||||
is higher than 2. */
|
||||
&& verbosity >= 2)
|
||||
{
|
||||
int i = 0;
|
||||
tree args = TYPE_ARG_TYPES (TREE_TYPE (node));
|
||||
|
@ -391,19 +409,22 @@ put_decl_node (tree node)
|
|||
{
|
||||
if (i > 0)
|
||||
put_decl_string (",", 1);
|
||||
put_decl_node (TREE_VALUE (args));
|
||||
put_decl_node (TREE_VALUE (args), verbosity);
|
||||
}
|
||||
put_decl_string (")", 1);
|
||||
}
|
||||
}
|
||||
else
|
||||
put_decl_node (DECL_NAME (node));
|
||||
put_decl_node (DECL_NAME (node), verbosity);
|
||||
}
|
||||
else if (TYPE_P (node) && TYPE_NAME (node) != NULL_TREE)
|
||||
{
|
||||
if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node))
|
||||
if (TREE_CODE (node) == RECORD_TYPE && TYPE_ARRAY_P (node)
|
||||
/* Print detailed array information only if verbosity is higher
|
||||
than 2. */
|
||||
&& verbosity >= 2)
|
||||
{
|
||||
put_decl_node (TYPE_ARRAY_ELEMENT (node));
|
||||
put_decl_node (TYPE_ARRAY_ELEMENT (node), verbosity);
|
||||
put_decl_string("[]", 2);
|
||||
}
|
||||
else if (node == promoted_byte_type_node)
|
||||
|
@ -417,7 +438,7 @@ put_decl_node (tree node)
|
|||
else if (node == void_type_node && was_pointer)
|
||||
put_decl_string ("null", 4);
|
||||
else
|
||||
put_decl_node (TYPE_NAME (node));
|
||||
put_decl_node (TYPE_NAME (node), verbosity);
|
||||
}
|
||||
else if (TREE_CODE (node) == IDENTIFIER_NODE)
|
||||
put_decl_string (IDENTIFIER_POINTER (node), IDENTIFIER_LENGTH (node));
|
||||
|
@ -434,10 +455,7 @@ const char *
|
|||
lang_printable_name (tree decl, int v)
|
||||
{
|
||||
decl_bufpos = 0;
|
||||
if (v == 0 && TREE_CODE (decl) == FUNCTION_DECL)
|
||||
put_decl_node (DECL_NAME (decl));
|
||||
else
|
||||
put_decl_node (decl);
|
||||
put_decl_node (decl, v);
|
||||
put_decl_string ("", 1);
|
||||
return decl_buf;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue