From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20015 invoked by alias); 25 Nov 2001 05:15:06 -0000 Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org Received: (qmail 19808 invoked from network); 25 Nov 2001 05:13:45 -0000 Received: from unknown (HELO mail.wrs.com) (147.11.1.11) by sourceware.cygnus.com with SMTP; 25 Nov 2001 05:13:45 -0000 Received: from kankakee.wrs.com (kankakee [147.11.37.13]) by mail.wrs.com (8.9.3/8.9.1) with ESMTP id VAA27780; Sat, 24 Nov 2001 21:12:32 -0800 (PST) From: mike stump Received: (from mrs@localhost) by kankakee.wrs.com (8.9.3+Sun/8.9.0) id VAA01411; Sat, 24 Nov 2001 21:13:11 -0800 (PST) Date: Thu, 15 Nov 2001 08:15:00 -0000 Message-Id: <200111250513.VAA01411@kankakee.wrs.com> To: gdr@codesourcery.com, zack@codesourcery.com Subject: Re: ICE in change_address at emit_rtl.c Cc: gcc@gcc.gnu.org, mark@codesourcery.com, neil@daikokuya.demon.co.uk X-SW-Source: 2001-11/txt/msg00678.txt.bz2 > Date: Sat, 24 Nov 2001 16:41:55 -0800 > From: Zack Weinberg > To: Gabriel Dos Reis > 2. As few spurious errors reported to the user as possible. This is > one place where ERROR_MARK_NODE really falls down. Consider these > ill-formed declarations: > double int number; > typedef struct foo foo_t[; > These will both provoke error cascades in the current compiler, ? double int number; int maif() { number = 1; number1 = 1; } seems to do the right thing? > mainly because 'number' and 'foo_t' don't get entered into the > symbol table, so we issue errors every time they are used, even if > the use would have been valid given a valid declaration. > For instance, > inline int foo(void) { syntax error; } > should become "extern int foo(void);" for purpose of further processing. It already does: double int number; void maif() { number = 1; number1 = 1; } void sdf() { syntax error } void mae() { int a = sdf(); } terr.c:1: two or more data types in declaration of `number' terr.c: In function `maif': terr.c:5: `number1' undeclared (first use in this function) terr.c:5: (Each undeclared identifier is reported only once terr.c:5: for each function it appears in.) terr.c: In function `sdf': terr.c:9: `syntax' undeclared (first use in this function) terr.c:9: parse error before "error" terr.c: In function `mae': terr.c:13: void value not ignored as it ought to be Did I construct a testcase that was too simple?