From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29063 invoked by alias); 4 Jan 2003 13:36:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 29049 invoked by uid 71); 4 Jan 2003 13:36:00 -0000 Date: Sat, 04 Jan 2003 13:36:00 -0000 Message-ID: <20030104133600.29048.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Neil Booth Subject: Re: c/9166: [2003-01-03] C front end's type scoping not right Reply-To: Neil Booth X-SW-Source: 2003-01/txt/msg00280.txt.bz2 List-Id: The following reply was made to PR c/9166; it has been noted by GNATS. From: Neil Booth To: "Joseph S. Myers" Cc: neil@gcc.gnu.org, gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org Subject: Re: c/9166: [2003-01-03] C front end's type scoping not right Date: Sat, 4 Jan 2003 13:27:10 +0000 Joseph S. Myers wrote:- > What makes you think the former prototype is visible at the latter? The > former declaration has block scope; as the Rationale discusses, there is a > delibrate compromise in the standard here, where a former block scope > external declaration can be considered, but need not be. Incompatible > declarations need only be diagnosed in the same scope (by 6.7#4). > Declarations refering to the same object or function that are not in the > same scope merely yield undefined behavior if of incompatible types > (6.2.7#2). Fair enough. Obviously I'd never considered the former declaration visible, it clearly isn't. I'd just not read the consequences of incompatible declarations closely enough. I think a pedwarn would be nice, though I suspect it's hard with GCC's current code. At least the behaviour is better than EDG and LCC, which always reject the second declaration as incompatible even when it's identical. Neil.