From: jason Date: Mon, 8 Dec 2003 20:29:15 +0000 (+0000) Subject: Give the anonymous namespace a null DECL_NAME. X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=c2e831643d8dc86d51a13566f930b73b680a7931;p=pf3gnuchains%2Fgcc-fork.git 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74433 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8105bfceb31..3fa1392a983 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,13 +1,25 @@ -2003-12-07 Giovanni Bajo - - PR c++/2294 - * name-lookup.c (push_overloaded_decl): Always construct an - OVERLOAD unless the declaration is a built-in. - (set_namespace_binding): While binding OVERLOADs with only one - declaration, we still need to call supplement_binding. - * init.c (build_new_1): Deal with an OVERLOAD set when - looking up for _Jv_AllocObject. - * except.c (build_throw): Likewise for _Jv_Throw. +2003-12-08 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. + +2003-12-07 Giovanni Bajo + + PR c++/2294 + * name-lookup.c (push_overloaded_decl): Always construct an + OVERLOAD unless the declaration is a built-in. + (set_namespace_binding): While binding OVERLOADs with only one + declaration, we still need to call supplement_binding. + * init.c (build_new_1): Deal with an OVERLOAD set when + looking up for _Jv_AllocObject. + * except.c (build_throw): Likewise for _Jv_Throw. 2003-12-06 Mark Mitchell diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index b02fb5699e0..b1a434e0b0e 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -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.) */ diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index ca8c603c0e3..a27e2584d14 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -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); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a1b320ff352..9c6379fa4b2 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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.) */ diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c index b48f25b7752..17b30c94367 100644 --- a/gcc/cp/dump.c +++ b/gcc/cp/dump.c @@ -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: diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 1c44324c640..dab0f2eafd3 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -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, ""); else pp_tree_identifier (cxx_pp, DECL_NAME (t)); diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 15334f321e3..94c885cacc4 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -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. diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 203cb1bba8c..7446b30c524 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -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