Bug#491653: gcc-4.3: misoptimization of 64-bit bitfield when not byte aligned
You're right again, this is entirely due to the effects of strict
aliasing rules. The problem goes away with -fno-strict-aliasing.
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
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.