Possible bug in optimization
Chris Croswhite
ccroswhite@get2chip.com
Sat Feb 15 03:07:00 GMT 2003
Here is a simple prog that I think might illustrate a bug in gcc-3.2.1/2
optimization:
#include <stdio.h>
int main(int argc, char **argv)
{
long long val = 0x4000000000000001;
(((int*) &val)[1]) &= 0x0;
printf("%lld\n", val);
return 1;
}
This bit wise operation shows two different results when run with/out
optimization as follows:
gcc -O0 -static -save-temps toto2.c -o toto2-O0
gcc -O2 -static -save-temps toto2.c -o toto2-O2
gcc -O1 -static -save-temps toto2.c -o toto2-O1
gcc -g -static -save-temps toto2.c -o toto2-g
[~]$ ./toto2-O0
1
[~]$ ./toto2-O1
1
[~]$ ./toto2-O2
4611686018427387905
[~]$ ./toto2-g
1
Using gcc 3.2.2 and gcc3.2.1 (release) on AMD Athlon and Xeon (i686).
Built using: --enable-languages=c,c++ --prefix=/usr/local/gcc322
If someone tell me what I have done wrong, I would really appreciate it.
TIA,
Chris
--
Chris Croswhite <ccroswhite@get2chip.com>
Get2Chip, Inc.
More information about the Gcc-bugs
mailing list