From 1a3da51ba7278d909c3486748878c1e525ebb61d Mon Sep 17 00:00:00 2001 From: hubicka Date: Thu, 12 Nov 2009 06:50:19 +0000 Subject: [PATCH] * decl2.c (constrain_visibility): Clear WEAK and COMMON flags. * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON imply PUBLIC || EXTERNAL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154115 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/cp/ChangeLog | 4 ++++ gcc/cp/decl2.c | 2 ++ gcc/ipa.c | 3 +++ 4 files changed, 14 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ec401b..4c45b70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-11-12 Jan Hubicka + + * ipa.c (function_and_variable_visibility): Verify that WEAK || COMMON + imply PUBLIC || EXTERNAL. + 2009-11-11 Andy Hutchinson PR middle-end/41440 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 355cf99..9a28a49 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2009-11-12 Jan Hubicka + + * decl2.c (constrain_visibility): Clear WEAK and COMMON flags. + 2009-11-11 Jason Merrill PR c++/39131 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index ba987f7..510aa8f 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -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)) diff --git a/gcc/ipa.c b/gcc/ipa.c index 1e5f22c..4297ea2 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -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 -- 2.7.4