diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-09-20 01:56:52 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-09-19 23:56:52 +0000 |
commit | f7217cde7f382aeb19dd3e80bc8f7ffae798315f (patch) | |
tree | d7d5f6d00208bddb323b80ac27eed3ded29bed4a /gcc/varasm.c | |
parent | 3f99b0612f7db76b6ed1a25ecce8fa327eec9f61 (diff) | |
download | gcc-f7217cde7f382aeb19dd3e80bc8f7ffae798315f.zip gcc-f7217cde7f382aeb19dd3e80bc8f7ffae798315f.tar.gz gcc-f7217cde7f382aeb19dd3e80bc8f7ffae798315f.tar.bz2 |
re PR c++/61825 (g++.dg/cpp0x/static_assert9.C FAILs)
PR c++/61825
* c-family/c-common.c (handle_alias_ifunc_attribute): Check
that visibility change is possible
(handle_weakref_attribute): Likewise.
* cgraph.h (symtab_node): Add method get_create and
field refuse_visibility_changes.
(symtab_node::get_create): New method.
* fold-const.c (tree_single_nonzero_warnv_p): Use get_create.
* varasm.c (mark_weak): Verify that visibility change is
possible.
* gcc.dg/tree-ssa/nonzero-1.c: Require error to be output.
From-SVN: r215409
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r-- | gcc/varasm.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c index 111c657..dd3211a 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -5230,6 +5230,12 @@ output_constructor (tree exp, unsigned HOST_WIDE_INT size, static void mark_weak (tree decl) { + if (DECL_WEAK (decl)) + return; + + struct symtab_node *n = symtab_node::get (decl); + if (n && n->refuse_visibility_changes) + error ("%+D declared weak after being used", decl); DECL_WEAK (decl) = 1; if (DECL_RTL_SET_P (decl) |