varasm.c (mark_decl_referenced): Revert the removal until targets are fixed.

* varasm.c (mark_decl_referenced): Revert the removal until targets
	are fixed.

From-SVN: r199699
This commit is contained in:
Jan Hubicka 2013-06-05 17:29:12 +02:00 committed by Jan Hubicka
parent 8f8a20576a
commit 0378bddb9a
2 changed files with 32 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2013-06-05 Jan Hubicka <jh@suse.cz>
* varasm.c (mark_decl_referenced): Revert the removal until targets
are fixed.
2013-06-05 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000.c (print_operand, 'z'): Use DECL_PRESERVE_P
@ -31,7 +36,6 @@
(function_and_variable_visibility): Clear forced_by_abi as needed.
* trans-mem.c (ipa_tm_mark_forced_by_abi_node): New functoin.
(ipa_tm_create_version_alias, ipa_tm_create_version): Update.
* varasm.c (mark_decl_referenced): Remove.
* symtab.c (dump_symtab_base): Dump forced_by_abi.
* varpool.c (decide_is_variable_needed): Remove.

View File

@ -2244,6 +2244,33 @@ mark_referenced (tree id)
TREE_SYMBOL_REFERENCED (id) = 1;
}
/* Set the symbol_referenced flag for DECL and notify callgraph. */
void
mark_decl_referenced (tree decl)
{
if (TREE_CODE (decl) == FUNCTION_DECL)
{
/* Extern inline functions don't become needed when referenced.
If we know a method will be emitted in other TU and no new
functions can be marked reachable, just use the external
definition. */
struct cgraph_node *node = cgraph_get_create_node (decl);
if (!DECL_EXTERNAL (decl)
&& !node->symbol.definition)
cgraph_mark_force_output_node (node);
}
else if (TREE_CODE (decl) == VAR_DECL)
{
struct varpool_node *node = varpool_node_for_decl (decl);
/* C++ frontend use mark_decl_references to force COMDAT variables
to be output that might appear dead otherwise. */
node->symbol.force_output = true;
}
/* else do nothing - we can get various sorts of CST nodes here,
which do not need to be marked. */
}
/* Follow the IDENTIFIER_TRANSPARENT_ALIAS chain starting at *ALIAS
until we find an identifier that is not itself a transparent alias.
Modify the alias passed to it by reference (and all aliases on the