Hello, I discovered what seems to be a bug in G++ 4.4 (that was not there in prior versions and seems already fixed in 4.5) and am wondering if there's some information available what exactly the problematic cases are, so that I know which places in my code to verify/adapt. It was a "caching" problem when -O2 was enabled and an enum variable was checked and increased in a loop and then finally checked again, all in some very near code-lines. The final check did get an old "cached" value of the variable, while the code below that worked with the actual value. When I changed the declaration of the variable from my enum type to "volatile" or to "int", then it worked. The question is if the following is probably illegal C++-code, although I don't think so? myEnumType myVariable; myVariable = myEnumType (myVariable + 2); (I extracted that piece of code into a small test-program and that worked, strangely.) If someone has answers to those two questions, that'd be very nice. Thanks so far for reading. Cheers! Martin