Commit ee6f1177 by Jan Hubicka Committed by Jan Hubicka

cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY similarly to DECL_COMDAT.

	* cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY
	similarly to DECL_COMDAT.
	* cgraphunit.c (cgraph_analyze_function): Likewise.
	* ipa.c (function_and_variable_visibility): Likewise.

From-SVN: r175015
parent 618abf9a
2011-06-13 Jan Hubicka <jh@suse.cz> 2011-06-13 Jan Hubicka <jh@suse.cz>
* cgraph.c (cgraph_make_decl_local): Handle DECL_ONE_ONLY
similarly to DECL_COMDAT.
* cgraphunit.c (cgraph_analyze_function): Likewise.
* ipa.c (function_and_variable_visibility): Likewise.
2011-06-13 Jan Hubicka <jh@suse.cz>
* lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not output * lto-streamer-out.c (lto_output_ts_binfo_tree_pointers): Do not output
BINFO_VIRTUALS when streaming for ltrans unit. BINFO_VIRTUALS when streaming for ltrans unit.
......
...@@ -2487,7 +2487,7 @@ cgraph_make_decl_local (tree decl) ...@@ -2487,7 +2487,7 @@ cgraph_make_decl_local (tree decl)
DECL_COMMON (decl) = 0; DECL_COMMON (decl) = 0;
else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL);
if (DECL_COMDAT (decl)) if (DECL_ONE_ONLY (decl) || DECL_COMDAT (decl))
{ {
/* It is possible that we are linking against library defining same COMDAT /* It is possible that we are linking against library defining same COMDAT
function. To avoid conflict we need to rename our local name of the function. To avoid conflict we need to rename our local name of the
......
...@@ -830,9 +830,9 @@ cgraph_analyze_function (struct cgraph_node *node) ...@@ -830,9 +830,9 @@ cgraph_analyze_function (struct cgraph_node *node)
if (TREE_PUBLIC (node->decl) && node->same_body_alias) if (TREE_PUBLIC (node->decl) && node->same_body_alias)
{ {
DECL_EXTERNAL (node->decl) = DECL_EXTERNAL (node->thunk.alias); DECL_EXTERNAL (node->decl) = DECL_EXTERNAL (node->thunk.alias);
if (DECL_COMDAT (node->thunk.alias)) if (DECL_ONE_ONLY (node->thunk.alias))
{ {
DECL_COMDAT (node->decl) = 1; DECL_COMDAT (node->decl) = DECL_COMDAT (node->thunk.alias);
DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (node->thunk.alias); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (node->thunk.alias);
if (DECL_ONE_ONLY (node->thunk.alias) && !node->same_comdat_group) if (DECL_ONE_ONLY (node->thunk.alias) && !node->same_comdat_group)
{ {
......
...@@ -904,9 +904,9 @@ function_and_variable_visibility (bool whole_program) ...@@ -904,9 +904,9 @@ function_and_variable_visibility (bool whole_program)
We also need to arrange the thunk into the same comdat group as We also need to arrange the thunk into the same comdat group as
the function it reffers to. */ the function it reffers to. */
if (DECL_COMDAT (decl_node->decl)) if (DECL_ONE_ONLY (decl_node->decl))
{ {
DECL_COMDAT (node->decl) = 1; DECL_COMDAT (node->decl) = DECL_COMDAT (decl_node->decl);
DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (decl_node->decl); DECL_COMDAT_GROUP (node->decl) = DECL_COMDAT_GROUP (decl_node->decl);
if (DECL_ONE_ONLY (decl_node->decl) && !node->same_comdat_group) if (DECL_ONE_ONLY (decl_node->decl) && !node->same_comdat_group)
{ {
......
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