Commit ed36980c by Jason Merrill

Give the anonymous namespace a null DECL_NAME.

        * cp-tree.h: Don't declare anonymous_namespace_name.
        * decl.c: Don't define it.
        * dump.c (cp_dump_tree): Don't check for it.
        * cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise.
        * error.c (dump_decl): Likewise.
        * name-lookup.c: Define it here.
        (push_namespace): Put it in DECL_ASSEMBLER_NAME instead.
        * mangle.c (write_unqualified_name): Adjust.

From-SVN: r74433
parent 4e8537ae
2003-12-08 Jason Merrill <jason@redhat.com>
Give the anonymous namespace a null DECL_NAME.
* cp-tree.h: Don't declare anonymous_namespace_name.
* decl.c: Don't define it.
* dump.c (cp_dump_tree): Don't check for it.
* cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise.
* error.c (dump_decl): Likewise.
* name-lookup.c: Define it here.
(push_namespace): Put it in DECL_ASSEMBLER_NAME instead.
* mangle.c (write_unqualified_name): Adjust.
2003-12-07 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/2294
......
......@@ -3085,8 +3085,6 @@ extern GTY(()) tree error_mark_list;
extern GTY(()) tree integer_two_node;
extern GTY(()) tree integer_three_node;
extern GTY(()) tree anonymous_namespace_name;
/* The number of function bodies which we are currently processing.
(Zero if we are at namespace scope, one inside the body of a
function, two inside the body of a function in a local class, etc.) */
......
......@@ -1479,7 +1479,7 @@ static void
pp_cxx_original_namespace_definition (cxx_pretty_printer *pp, tree t)
{
pp_cxx_identifier (pp, "namespace");
if (DECL_NAME (t) != anonymous_namespace_name)
if (DECL_NAME (t))
pp_cxx_unqualified_id (pp, t);
pp_cxx_whitespace (pp);
pp_cxx_left_brace (pp);
......
......@@ -228,10 +228,6 @@ struct named_label_list GTY(())
#define named_labels cp_function_chain->x_named_labels
/* The name of the anonymous namespace, throughout this translation
unit. */
tree anonymous_namespace_name;
/* The number of function bodies which we are currently processing.
(Zero if we are at namespace scope, one inside the body of a
function, two inside the body of a function in a local class, etc.) */
......
......@@ -230,11 +230,6 @@ cp_dump_tree (void* dump_info, tree t)
dump_child ("tynm", TREE_TYPE (t));
return true;
}
else if (t == anonymous_namespace_name)
{
dump_string (di, "unnamed");
return true;
}
break;
case OFFSET_TYPE:
......
......@@ -805,7 +805,7 @@ dump_decl (tree t, int flags)
else
{
dump_scope (CP_DECL_CONTEXT (t), flags);
if (DECL_NAME (t) == anonymous_namespace_name)
if (DECL_NAME (t) == NULL_TREE)
pp_identifier (cxx_pp, "<unnamed>");
else
pp_tree_identifier (cxx_pp, DECL_NAME (t));
......
......@@ -991,6 +991,8 @@ write_unqualified_name (const tree decl)
write_special_name_constructor (decl);
else if (DECL_LANG_SPECIFIC (decl) != NULL && DECL_DESTRUCTOR_P (decl))
write_special_name_destructor (decl);
else if (DECL_NAME (decl) == NULL_TREE)
write_source_name (DECL_ASSEMBLER_NAME (decl));
else if (DECL_CONV_FN_P (decl))
{
/* Conversion operator. Handle it right here.
......
......@@ -48,6 +48,10 @@ static tree push_using_directive (tree);
tree global_namespace;
/* The name of the anonymous namespace, throughout this translation
unit. */
GTY(()) tree anonymous_namespace_name;
/* Compute the chain index of a binding_entry given the HASH value of its
name and the total COUNT of chains. COUNT is assumed to be a power
......@@ -2990,6 +2994,7 @@ push_namespace (tree name)
tree d = NULL_TREE;
int need_new = 1;
int implicit_use = 0;
bool anon = !name;
timevar_push (TV_NAME_LOOKUP);
......@@ -2999,7 +3004,7 @@ push_namespace (tree name)
my_friendly_assert (global_namespace != NULL && name != global_scope_name,
20030531);
if (!name)
if (anon)
{
/* The name of anonymous namespace is unique for the translation
unit. */
......@@ -3034,6 +3039,12 @@ push_namespace (tree name)
d = build_lang_decl (NAMESPACE_DECL, name, void_type_node);
DECL_CONTEXT (d) = FROB_CONTEXT (current_namespace);
d = pushdecl (d);
if (anon)
{
/* Clear DECL_NAME for the benefit of debugging back ends. */
SET_DECL_ASSEMBLER_NAME (d, name);
DECL_NAME (d) = NULL_TREE;
}
begin_scope (sk_namespace, d);
}
else
......
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