public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
From: hpa@transmeta.com
To: gcc-gnats@gcc.gnu.org
Subject: c/7689: Bad code generated when function sometimes does not return
Date: Thu, 22 Aug 2002 15:06:00 -0000	[thread overview]
Message-ID: <20020822215007.31564.qmail@sources.redhat.com> (raw)


>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 <string.h>

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


             reply	other threads:[~2002-08-22 21:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-22 15:06 hpa [this message]
2002-11-25 13:16 ebotcazou
2003-02-23 21:29 neroden

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020822215007.31564.qmail@sources.redhat.com \
    --to=hpa@transmeta.com \
    --cc=gcc-gnats@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).