decl2.c (constrain_visibility): Clear WEAK and COMMON flags.

* decl2.c (constrain_visibility): Clear WEAK and COMMON flags.

	* ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
	imply PUBLIC || EXTERNAL.

From-SVN: r154115
This commit is contained in:
Jan Hubicka 2009-11-12 07:50:19 +01:00 committed by Jan Hubicka
parent 0a8fff5778
commit fcc993f6f5
4 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2009-11-12 Jan Hubicka <jh@suse.cz>
* ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON
imply PUBLIC || EXTERNAL.
2009-11-11 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
PR middle-end/41440

View File

@ -1,3 +1,7 @@
2009-11-12 Jan Hubicka <jh@suse.cz>
* decl2.c (constrain_visibility): Clear WEAK and COMMON flags.
2009-11-11 Jason Merrill <jason@redhat.com>
PR c++/39131

View File

@ -1883,6 +1883,8 @@ constrain_visibility (tree decl, int visibility)
if (!DECL_EXTERN_C_P (decl))
{
TREE_PUBLIC (decl) = 0;
DECL_WEAK (decl) = 0;
DECL_COMMON (decl) = 0;
DECL_COMDAT_GROUP (decl) = NULL_TREE;
DECL_INTERFACE_KNOWN (decl) = 1;
if (DECL_LANG_SPECIFIC (decl))

View File

@ -292,6 +292,7 @@ function_and_variable_visibility (bool whole_program)
for (node = cgraph_nodes; node; node = node->next)
{
gcc_assert (!DECL_WEAK (node->decl) || TREE_PUBLIC (node->decl) || DECL_EXTERNAL (node->decl));
if (cgraph_externally_visible_p (node, whole_program))
{
gcc_assert (!node->global.inlined_to);
@ -316,6 +317,8 @@ function_and_variable_visibility (bool whole_program)
{
if (!vnode->finalized)
continue;
gcc_assert ((!DECL_WEAK (vnode->decl) || DECL_COMMON (vnode->decl))
|| TREE_PUBLIC (vnode->decl) || DECL_EXTERNAL (node->decl));
if (vnode->needed
&& (DECL_COMDAT (vnode->decl) || TREE_PUBLIC (vnode->decl))
&& (!whole_program