c-decl.c (duplicate_decls): Do not call make_var_volatile() in case of invalid volatile re-declaration.

* c-decl.c (duplicate_decls): Do not call make_var_volatile() in
case of invalid volatile re-declaration.

From-SVN: r35119
This commit is contained in:
Alexandre Oliva 2000-07-18 17:53:35 +00:00 committed by Alexandre Oliva
parent a306451c69
commit 79c282037d
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2000-07-18 Alexandre Oliva <aoliva@redhat.com>
* c-decl.c (duplicate_decls): Do not call make_var_volatile() in
case of invalid volatile re-declaration.
2000-07-18 Jakub Jelinek <jakub@redhat.com>
* calls.c (store_arg): Return non-zero if sibcall_failure is

View File

@ -1843,7 +1843,14 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
if (TREE_THIS_VOLATILE (newdecl))
{
TREE_THIS_VOLATILE (write_olddecl) = 1;
if (TREE_CODE (newdecl) == VAR_DECL)
if (TREE_CODE (newdecl) == VAR_DECL
/* If an automatic variable is re-declared in the same
function scope, but the old declaration was not
volatile, make_var_volatile() would crash because the
variable would have been assigned to a pseudo, not a
MEM. Since this duplicate declaration is invalid
anyway, we just skip the call. */
&& errmsg == 0)
make_var_volatile (newdecl);
}