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?