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; }