From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5216 invoked by alias); 22 Aug 2002 21:56: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 5194 invoked by uid 71); 22 Aug 2002 21:56:00 -0000 Resent-Date: 22 Aug 2002 21:56:00 -0000 Resent-Message-ID: <20020822215600.5193.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, hpa@transmeta.com Received: (qmail 31565 invoked by uid 61); 22 Aug 2002 21:50:07 -0000 Message-Id: <20020822215007.31564.qmail@sources.redhat.com> Date: Thu, 22 Aug 2002 15:06:00 -0000 From: hpa@transmeta.com Reply-To: hpa@transmeta.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c/7689: Bad code generated when function sometimes does not return X-SW-Source: 2002-08/txt/msg00472.txt.bz2 List-Id: >Number: 7689 >Category: c >Synopsis: Bad code generated when function sometimes does not return >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Aug 22 14:56:00 PDT 2002 >Closed-Date: >Last-Modified: >Originator: hpa@transmeta.com >Release: unknown-1.0 >Organization: >Environment: i386-redhat-linux Linux RedHat Beta 7.3.94 ("null") Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.2/specs Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --host=i386-redhat-linux --with-system-zlib --enable-__cxa_atexit Thread model: posix gcc version 3.2 (Red Hat Linux Rawhide 3.2-1) >Description: The included code is from a real-life program. Here, obviously, the die() function never returns, and so the programmer has not bothered to put a return at the end of the function. However, when compiled with gcc 3.2, the compiler does not set the return value register (%eax) even in the case when the function *DOES* return (strcmp() returns zero.) >How-To-Repeat: The test case I have looks like: (preprocessed version included in attachment.) #include struct rom { char *name; int data; }; typedef struct rom *rom_t; typedef int boolean; extern void assert_rom_layouts(void); extern int verify_rom_sanity(rom_t, boolean); extern void errorf(char *, ...); extern void die(void); typedef struct rom_file_S { char * name; rom_t * roms; unsigned s_roms; unsigned n_roms; } rom_file_s, * rom_file_t; extern rom_file_s rom_file; extern char *parse_file; rom_t find_rom (char * model, boolean complete) { unsigned int ctr; rom_t rom; assert_rom_layouts (); for (ctr = 0; (ctr < (rom_file.n_roms)); ctr++) { rom = (rom_file.roms[ctr]); if ((strcmp ((rom->name), model)) == 0) { verify_rom_sanity (rom, complete); return (rom); } } errorf ("ROM layout \"%s\" not found in \"%s\".\n", model, parse_file); die (); } >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/gzip; name="findrom.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="findrom.tar.gz" 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 0zIt0zIt0zIt0zItE0n/Bex7y5kAeAAA