From e6393a027e2ea8e2835f93afa0c596676ce3bb9b Mon Sep 17 00:00:00 2001 From: jakub Date: Fri, 23 Mar 2001 12:04:11 +0000 Subject: * decl.c (local_names): Define. (push_local_name): New. (grok_reference_init): Return init if initializing static reference variable with non-constant instead of emitting it. Move expand_static_init call to cp_finish_decl. (layout_var_decl): Call push_local_name. (maybe_commonize_var): Allow inlining functions even if they have static local variables, use comdat_linkage for them if flag_weak. (check_initializer): Call obscure_complex_init if grok_reference_init returned non-zero. (save_function_data): Clear x_local_names. (pop_cp_function_context): Free x_local_names. (mark_inlined_fns): Remove. (mark_lang_function): Mark x_local_names. (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P. Mark inlined_fns as tree, remove call to mark_inlined_fns. * class.c (alter_access): Ensure DECL_ACCESS is never set if DECL_DISCRIMINATOR_P. * cp-tree.h (cp_language_function): Add x_local_names. (lang_decl_flags): Add discriminator into u2. (lang_decl_inlined_fns): Remove. (lang_decl): inlined_fns is now a TREE_VEC. (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define. * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a TREE_VEC, not a custom structure. (optimize_function): Likewise. * mangle.c (discriminator_for_local_entity): Discriminate among VAR_DECL local entities. * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS is not valid. * g++.old-deja/g++.other/mangle3.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40779 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/search.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gcc/cp/search.c') diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 95ede8bcdea..c52620f0cf3 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -842,7 +842,7 @@ dfs_access_in_type (binfo, data) access to the DECL. The CONST_DECL for an enumeration constant will not have DECL_LANG_SPECIFIC, and thus no DECL_ACCESS. */ - if (DECL_LANG_SPECIFIC (decl)) + if (DECL_LANG_SPECIFIC (decl) && !DECL_DISCRIMINATOR_P (decl)) { tree decl_access = purpose_member (type, DECL_ACCESS (decl)); if (decl_access) -- cgit v1.2.1