From: Doug Evans Date: Sun, 5 Mar 1995 23:27:16 +0000 (+0000) Subject: Undo this patch, breaks libobjc builds. X-Git-Tag: misc/cutover-egcs-0~4833 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd681d1f89dcfdf9e32f21ea8d0800d8eed1a260;p=thirdparty%2Fgcc.git Undo this patch, breaks libobjc builds. * c-decl.c (pushdecl): When have a duplicate decl, and it is global, delete lookup_name name in test for return. (redeclaration_error_message): When newdecl is a block level declaration, use lookup_name_current_level instead of DECL_CONTEXT. From-SVN: r9123 --- diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 86c1024677da..0b3bb17554be 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1939,11 +1939,11 @@ pushdecl (x) IDENTIFIER_POINTER (name)); } - /* If this is a global decl, then we can't return as yet, because we - need to register this decl in the current binding block. This - ensures that we get an error message if it is redeclared as a - local variable later in the same block. */ - if (! DECL_EXTERNAL (x) || ! TREE_PUBLIC (x)) + /* If this is a global decl, and there exists a conflicting local + decl in a parent block, then we can't return as yet, because we + need to register this decl in the current binding block. */ + if (! DECL_EXTERNAL (x) || ! TREE_PUBLIC (x) + || lookup_name (name) == t) return t; } @@ -2422,7 +2422,7 @@ redeclaration_error_message (newdecl, olddecl) external reference. Otherwise, it is OK, because newdecl must be an extern reference to olddecl. */ if (!(DECL_EXTERNAL (newdecl) && DECL_EXTERNAL (olddecl)) - && lookup_name_current_level (DECL_NAME (newdecl)) == olddecl) + && DECL_CONTEXT (newdecl) == DECL_CONTEXT (olddecl)) return "redeclaration of `%s'"; return 0; }