$ cat >test.c #include int main(void) { int i = 0; i = i++; printf("%d\n", i); return 0; } $ gcc-3.3 -Wall -O0 -g1 -o test test.c test.c: In function `main': test.c:5: warning: operation on `i' may be undefined $ ./test 1 $ gcc-4.0 -Wall -O0 -g1 -o test test.c test.c: In function 'main': test.c:5: warning: operation on 'i' may be undefined $ ./test 1 $ gcc-3.3 -Wall -O3 -g0 -o test test.c test.c: In function `main': test.c:5: warning: operation on `i' may be undefined $ ./test 1 $ gcc-4.0 -Wall -O3 -g0 -o test test.c test.c: In function 'main': test.c:5: warning: operation on 'i' may be undefined $ ./test 1