c-decl.c (implicitly_declare): Copy declarations that are going to be placed in a local scope.

* c-decl.c (implicitly_declare): Copy declarations that are going
	to be placed in a local scope.

From-SVN: r65646
This commit is contained in:
Mark Mitchell 2003-04-15 16:35:52 +00:00 committed by Mark Mitchell
parent f5034c5edd
commit c8b718bae9
2 changed files with 12 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2003-04-15 Mark Mitchell <mark@codesourcery.com>
* c-decl.c (implicitly_declare): Copy declarations that are going
to be placed in a local scope.
2003-04-15 James A. Morrison <ja2morri@uwaterloo.ca>
* invoke.texi (Spec Files): Wrap if-exists-else example.

View File

@ -1872,7 +1872,13 @@ implicitly_declare (functionid)
warning_with_decl (decl, "previous declaration of `%s'");
C_DECL_IMPLICIT (decl) = 1;
}
return pushdecl (decl);
/* If this function is global, then it must already be in the
global binding level, so there's no need to push it again. */
if (current_binding_level == global_binding_level)
return decl;
/* If this is a local declaration, make a copy; we can't have
the same DECL listed in two different binding levels. */
return pushdecl (copy_node (decl));
}
/* Not seen before. */