The point is the unused array Q. If I remove it O2 works fine. But this must have a reason. Strange... -----Ursprüngliche Nachricht----- Von: Bossom, John [mailto:John.Bossom@xxxxxxxxxx] Gesendet: Montag, 15. November 2004 23:07 An: Beschorner Daniel; gcc-help@xxxxxxxxxxx Betreff: RE: -O2 problem / GCC 3.3.x I would not have expected this to fail with -fgcse According to the documentation it performa a global common subexpression elimination pass as well as global constant and copy propagation. Then again, you are going to get rounding errors (I believe the results overflow, hence, one could argue that the results you are getting to begin with are suspect - I guess it would be nice if they failed the same way) -----Original Message----- From: Beschorner Daniel [mailto:Daniel.Beschorner@xxxxxxxxxx] Sent: Monday, November 15, 2004 4:51 PM To: Bossom, John; gcc-help@xxxxxxxxxxx Subject: RE: -O2 problem / GCC 3.3.x Thank you! I tested on your advice (i386 hardware)... -O2 -fno-strict-aliasing, still wrong result but -O2 -fno-gcse, correct result Daniel -----Ursprüngliche Nachricht----- Von: Bossom, John [mailto:John.Bossom@xxxxxxxxxx] Gesendet: Montag, 15. November 2004 21:53 An: Beschorner Daniel; gcc-help@xxxxxxxxxxx Betreff: RE: -O2 problem / GCC 3.3.x Read up on -fstrict-aliasing (which is on with -O2). Try building again with -O2 -fno-strict-aliasing (Not saying this is the problem, however, if it goes away with the -fno-strict-aliasing then you'll know) -----Original Message----- From: gcc-help-owner@xxxxxxxxxxx [mailto:gcc-help-owner@xxxxxxxxxxx]On Behalf Of Beschorner Daniel Sent: Monday, November 15, 2004 3:42 PM To: 'gcc-help@xxxxxxxxxxx' Subject: -O2 problem / GCC 3.3.x Any idea why results differ between -O and -O2 with GCC 3.3.x/Linux??? GCC 2.95 works fine. results: -O 500000 -O2 300000 Thanks Daniel #include <stdio.h> int A,B,C; int i; int Q[1]; int H(int X, int Y) { return X^Y^100000; } int main() { A=B=C=100000; A+=H(B,C); C+=H(A,B); A+=H(B,C); C+=H(A,B); for (i=0;i<1;i++) Q[i] = 0; printf("%i\n",A); return 0; } This message may contain privileged and/or confidential information. If you have received this e-mail in error or are not the intended recipient, you may not use, copy, disseminate or distribute it; do not open any attachments, delete it immediately from your system and notify the sender promptly by e-mail that you have done so. Thank you.