re PR c/26993 (ICE on invalid code with weakref)

PR c/26993
* c-common.c (handle_weakref_attribute): Ignore attribute in
the same conditions the alias attribute is ignored.

From-SVN: r115545
This commit is contained in:
Alexandre Oliva 2006-07-18 06:41:13 +00:00 committed by Alexandre Oliva
parent e098f3a586
commit e1cf56b1d9
2 changed files with 16 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2006-07-18 Alexandre Oliva <aoliva@redhat.com>
PR c/26993
* c-common.c (handle_weakref_attribute): Ignore attribute in
the same conditions the alias attribute is ignored.
2006-07-17 Carlos O'Donell <carlos@codesourcery.com>
* dbxout.c (dbxout_function_end): Do not increment scope_labelno.

View file

@ -4828,6 +4828,16 @@ handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
{
tree attr = NULL_TREE;
/* We must ignore the attribute when it is associated with
local-scoped decls, since attribute alias is ignored and many
such symbols do not even have a DECL_WEAK field. */
if (decl_function_context (*node) || current_function_decl)
{
warning (OPT_Wattributes, "%qE attribute ignored", name);
*no_add_attrs = true;
return NULL_TREE;
}
/* The idea here is that `weakref("name")' mutates into `weakref,
alias("name")', and weakref without arguments, in turn,
implicitly adds weak. */