[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