c/161: Re: Optimization bug on Redhat Linux 5.1 with gcc 2.7.2.3
Martin v. Loewis
martin@loewis.home.cs.tu-berlin.de
Sat Apr 1 02:56:00 GMT 2000
>Number: 161
>Category: c
>Synopsis: Optimization bug on Redhat Linux 5.1
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: analyzed
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Sat Apr 01 02:56:01 PST 2000
>Closed-Date:
>Last-Modified:
>Originator: "Jacoby, Jeffrey" <jjacoby@rsasecurity.com>
>Release: 2.95.2
>Organization:
>Environment:
>Description:
Original-Message-ID: <E7B6CB80230AD31185AD0008C7EBC4D266623D@exrsa01.rsa.com>
Date: Fri, 31 Mar 2000 12:44:07 -0800
[MvL: retested with 2.95.2]
Bug report
-----------------------------------------------------------------------
Version of gcc:
[jjacoby@ceilo]$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3/specs
gcc version 2.7.2.3
-----------------------------------------------------------------------
Machine and OS information (this is on a Redhat Linux 5.1 machine)
[jjacoby@ceilo]$ uname -sr
Linux 2.0.34
[jjacoby@ceilo]$ uname -m
i686
-----------------------------------------------------------------------
Command arguments which will reproduce bug
[jjacoby@ceilo]$ gcc -O1 example.c
-----------------------------------------------------------------------
Observed behavior, first with optimization turned ON, then with
optimization turned OFF. Notice that output from printf is
different depending on optimization level.
[jjacoby@ceilo]$ gcc -O1 example.c
[jjacoby@ceilo]$ ./a.out
sign: ff
sign == 0xff: 0
[jjacoby@ceilo]$ gcc -O0 example.c
[jjacoby@ceilo]$ ./a.out
sign: ff
sign == 0xff: 1
Sincerely,
Jeff Jacoby
>How-To-Repeat:
int main(void) {
unsigned char sign;
unsigned char integer[2] = {0xff };
if ( integer[0] != 0 )
sign = 0xff;
else
sign = 0x00;
printf ( "sign: %x\n", sign );
printf ( "sign == 0xff: %d\n", (sign == 0xff) );
return 0;
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-prs
mailing list