aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-11-12 07:50:19 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2009-11-12 06:50:19 +0000
commitfcc993f6f58f66f6d34bf3de8da27bf9f34680c7 (patch)
tree571de9eb29a8c6efe78c80aa322723a6cb399710 /gcc
parent0a8fff5778dd361e64a01c1e2567f7d06d08c275 (diff)
downloadgcc-fcc993f6f58f66f6d34bf3de8da27bf9f34680c7.zip
gcc-fcc993f6f58f66f6d34bf3de8da27bf9f34680c7.tar.gz
gcc-fcc993f6f58f66f6d34bf3de8da27bf9f34680c7.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/ipa.c3
4 files changed, 14 insertions, 0 deletions
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 <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
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 <jh@suse.cz>
+
+ * decl2.c (constrain_visibility): Clear WEAK and COMMON flags.
+
2009-11-11 Jason Merrill <jason@redhat.com>
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