[Bug c/47796] The code to write to a bit_field data strucuture will be removed unexpectedly with gcc 4.5.1 -O2 option

qihua.dai at intel dot com gcc-bugzilla@gcc.gnu.org
Fri Feb 18 08:48:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47796

--- Comment #2 from qihua.dai at intel dot com 2011-02-18 07:54:15 UTC ---
(In reply to comment #1)
> You are violating C/C++ aliasing rules:
> pData = (unsigned int *)pTmp;
>         data = *pData;
>         printf("data = 0x%x\n", data);
> You access a tmp_t via an unsigned int which is undefined.

But why does gcc 4.4.0 have no this problem?

gcc 4.5 does not report warning like "break strict-aliasing rule" for this
code.
If accessing tmp_t via an unsigned int is illegal, does it mean we cannot write
c code to w/r bits in unsigned int?



More information about the Gcc-bugs mailing list