close 491653 thanks Hi Bastian,You're right again, this is entirely due to the effects of strict aliasing rules. The problem goes away with -fno-strict-aliasing.
Nick Bastian Blank wrote:
On Sun, Jul 20, 2008 at 11:14:10PM -0700, Nick Lewycky wrote:This testcase produces different output depending on whether -O1 or -O2 is specified.The testcase is wrong. Please produce a _minimal_ variant, it even shows the same behaviour without bitfields. Please explain what exactly the following is suposed to do: | *(1+(uint64_t *) &x) x includes no unit64_t at this address, but bitfields, a different type. So this is an aliasing violation. Bastian