gcc produces a wrong executable code
Vardan Akopian
vakopian@usc.edu
Mon Oct 16 21:31:00 GMT 2000
Description:
------------
Here is a very simple program, for wich gcc produces a wrong executable.
It calulates two number in two different ways. The results should be the
same but
are different.
The program:
------------
/* beginning of ooop.c */
/* calculate 2.0*1804289383.0/2147483647.0 - 1.0 in two ways */
int main()
{
double r;
double d, d1, d2;
r = 1804289383.0;
/* in two steps */
d1 = 2.0*r/2147483647.0;
d2 = d1 - 1.0;
/* at ones */
d = 2.0*r/2147483647.0 - 1.0;
/* Check if d2 == d. */
if (d2 != d) {
return (1); /* ooops, not equal ???!!! */
}
else {
return (0); /* the correct result */
}
}
/* end of ooops.c */
Information:
------------
- compiled with no arguments: if the file is named ooops.c, then just
gcc ooops.c
The compiler does not produce any error or warning (even with -Wall)
messages.
gcc installed using standard RedHat distributions (6.2 and 7.0 - see
bellow)
- problem tested and observed on the following systems:
* gcc version 2.96 20000731 (Red Hat Linux 7.0)
Double processor (Intel Pentium III 450MHz) Dell machine with
256M RAM
Linux 2.2.16 SMP i686 unknown
GNU ld version 2.10.90 (with BFD 2.10.0.18)
program is linked with /lib/libc-2.1.92.so and /lib/ld-2.1.92.so
GNU assembler version 2.10.90 (i386-redhat-linux) using BFD
version 2.10.0.18
RedHat Linux distribution 7.0
* gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Double processor (Intel Pentium III 700MHz) Dell machine with
256M RAM
Linux 2.2.16 SMP i686 unknown
GNU ld version 2.9.1 (with BFD 2.9.1.0.24)
program is linked with /lib/libc-2.1.3.so and /lib/ld-2.1.3.so
GNU assembler version 2.9.1 (i386-redhat-linux), using BFD
version 2.9.1.0.24
RedHat Linux distribution 6.2
* gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
Single processor (Intel Pentium 233MHz) Dell machine with 64M
RAM
Linux 2.2.14 i586 unknown
GNU ld version 2.9.1 (with BFD 2.9.1.0.24)
program is linked with /lib/libc-2.1.3.so and /lib/ld-2.1.3.so
GNU assembler version 2.9.1 (i386-redhat-linux), using BFD
version 2.9.1.0.24
RedHat Linux distribution 6.2
--
___________________________________________________________
Vardan Akopian
University of Southern California
Department of Mathematics
1042 W. 36th Place, DRB 155
Los Angeles, CA 90089-1113
e-mail : vakopian@scf.usc.edu
www : http://www-scf.usc.edu/~vakopian/
More information about the Gcc-bugs
mailing list