method.c (make_alias_for): Do not set TREE_SYMBOL_REFERENCED.

* method.c (make_alias_for): Do not set TREE_SYMBOL_REFERENCED.
	* decl2.c (mark_needed): Likewise.
	(decl_needed_p): Do not test TREE_SYMBOL_REFERENCED.

	* decl2.c (cxx_callgraph_analyze_expr): Remove.
	* cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Remove.
	* cp-tree.h (cxx_callgraph_analyze_expr): Remove.

From-SVN: r186658
This commit is contained in:
Jan Hubicka 2012-04-22 01:59:25 +02:00 committed by Jan Hubicka
parent 9e412ca3eb
commit 7ca8f48652
5 changed files with 12 additions and 50 deletions

View File

@ -1,3 +1,13 @@
2012-04-21 Jan Hubicka <jh@suse.cz>
* method.c (make_alias_for): Do not set TREE_SYMBOL_REFERENCED.
* decl2.c (mark_needed): Likewise.
(decl_needed_p): Do not test TREE_SYMBOL_REFERENCED.
* decl2.c (cxx_callgraph_analyze_expr): Remove.
* cp-objcp-common.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Remove.
* cp-tree.h (cxx_callgraph_analyze_expr): Remove.
2012-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org> 2012-04-21 Manuel López-Ibáñez <manu@gcc.gnu.org>
PR 35441 PR 35441

View File

@ -110,9 +110,6 @@ extern void cp_common_init_ts (void);
#undef LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN #undef LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN
#define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN cp_type_quals #define LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN cp_type_quals
#undef LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR
#define LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR cxx_callgraph_analyze_expr
#undef LANG_HOOKS_MAKE_TYPE #undef LANG_HOOKS_MAKE_TYPE
#define LANG_HOOKS_MAKE_TYPE cxx_make_type #define LANG_HOOKS_MAKE_TYPE cxx_make_type
#undef LANG_HOOKS_TYPE_FOR_MODE #undef LANG_HOOKS_TYPE_FOR_MODE

View File

@ -5136,7 +5136,6 @@ extern tree cp_build_parm_decl (tree, tree);
extern tree get_guard (tree); extern tree get_guard (tree);
extern tree get_guard_cond (tree); extern tree get_guard_cond (tree);
extern tree set_guard (tree); extern tree set_guard (tree);
extern tree cxx_callgraph_analyze_expr (tree *, int *);
extern void mark_needed (tree); extern void mark_needed (tree);
extern bool decl_needed_p (tree); extern bool decl_needed_p (tree);
extern void note_vague_linkage_fn (tree); extern void note_vague_linkage_fn (tree);

View File

@ -1782,10 +1782,7 @@ var_finalized_p (tree var)
void void
mark_needed (tree decl) mark_needed (tree decl)
{ {
/* It's possible that we no longer need to set TREE_USED (decl) = 1;
TREE_SYMBOL_REFERENCED here directly, but doing so is
harmless. */
TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) = 1;
mark_decl_referenced (decl); mark_decl_referenced (decl);
} }
@ -1811,9 +1808,7 @@ decl_needed_p (tree decl)
return true; return true;
/* If this entity was used, let the back end see it; it will decide /* If this entity was used, let the back end see it; it will decide
whether or not to emit it into the object file. */ whether or not to emit it into the object file. */
if (TREE_USED (decl) if (TREE_USED (decl))
|| (DECL_ASSEMBLER_NAME_SET_P (decl)
&& TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl))))
return true; return true;
/* Functions marked "dllexport" must be emitted so that they are /* Functions marked "dllexport" must be emitted so that they are
visible to other DLLs. */ visible to other DLLs. */
@ -3436,44 +3431,6 @@ generate_ctor_and_dtor_functions_for_priority (splay_tree_node n, void * data)
return 0; return 0;
} }
/* Called via LANGHOOK_CALLGRAPH_ANALYZE_EXPR. It is supposed to mark
decls referenced from front-end specific constructs; it will be called
only for language-specific tree nodes.
Here we must deal with member pointers. */
tree
cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED)
{
tree t = *tp;
switch (TREE_CODE (t))
{
case PTRMEM_CST:
if (TYPE_PTRMEMFUNC_P (TREE_TYPE (t)))
cgraph_mark_address_taken_node (
cgraph_get_create_node (PTRMEM_CST_MEMBER (t)));
break;
case BASELINK:
if (TREE_CODE (BASELINK_FUNCTIONS (t)) == FUNCTION_DECL)
cgraph_mark_address_taken_node (
cgraph_get_create_node (BASELINK_FUNCTIONS (t)));
break;
case VAR_DECL:
if (DECL_CONTEXT (t)
&& flag_use_repository
&& TREE_CODE (DECL_CONTEXT (t)) == FUNCTION_DECL)
/* If we need a static variable in a function, then we
need the containing function. */
mark_decl_referenced (DECL_CONTEXT (t));
break;
default:
break;
}
return NULL;
}
/* Java requires that we be able to reference a local address for a /* Java requires that we be able to reference a local address for a
method, and not be confused by PLT entries. If hidden aliases are method, and not be confused by PLT entries. If hidden aliases are
supported, collect and return all the functions for which we should supported, collect and return all the functions for which we should

View File

@ -244,7 +244,6 @@ make_alias_for (tree target, tree newid)
TREE_ADDRESSABLE (alias) = 1; TREE_ADDRESSABLE (alias) = 1;
TREE_USED (alias) = 1; TREE_USED (alias) = 1;
SET_DECL_ASSEMBLER_NAME (alias, DECL_NAME (alias)); SET_DECL_ASSEMBLER_NAME (alias, DECL_NAME (alias));
TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (alias)) = 1;
return alias; return alias;
} }