ipa.c (function_and_variable_visibility): Clear COMDAT on functions when to PUBLIC is set.

* ipa.c (function_and_variable_visibility): Clear COMDAT on functions
	when to PUBLIC is set.

From-SVN: r154167
This commit is contained in:
Jan Hubicka 2009-11-13 19:55:07 +01:00 committed by Jan Hubicka
parent 5b6dad5d8f
commit 589520b621
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2009-11-13 Jan Hubicka <jh@suse.cz>
* ipa.c (function_and_variable_visibility): Clear COMDAT on functions
when to PUBLIC is set.
2009-11-13 Jakub Jelinek <jakub@redhat.com>
PR middle-end/42029

View File

@ -292,6 +292,12 @@ function_and_variable_visibility (bool whole_program)
for (node = cgraph_nodes; node; node = node->next)
{
/* C++ FE on lack of COMDAT support create local COMDAT functions
(that ought to be shared but can not due to object format
limitations). It is neccesary to keep the flag to make rest of C++ FE
happy. Clear the flag here to avoid confusion in middle-end. */
if (DECL_COMDAT (node->decl) && !TREE_PUBLIC (node->decl))
DECL_COMDAT (node->decl) = 0;
gcc_assert ((!DECL_WEAK (node->decl) && !DECL_COMDAT (node->decl))
|| TREE_PUBLIC (node->decl) || DECL_EXTERNAL (node->decl));
if (cgraph_externally_visible_p (node, whole_program))