------- Comment #3 from xinping dot huang at gmail dot com 2010-05-24 13:53 ------- Subject: Re: Strange behavior on bit fields structures
Sorry I made a mistake here, it works on 32bit mode, but failed on the 64bit mode. Wesley 2010/5/24 xinping dot huang at gmail dot com <gcc-bugzi...@gcc.gnu.org>: > > > ------- Comment #2 from xinping dot huang at gmail dot com 2010-05-24 13:51 > ------- > Subject: Re: Strange behavior on bit fields sructures. > > My gcc 4.4.4 generate the correct binary and get the correct result > even with -O3 option. > > Wesley > > 2010/5/24 dennis at conus dot info <gcc-bugzi...@gcc.gnu.org>: >> >> >> ------- Comment #1 from dennis at conus dot info 2010-05-24 13:30 ------- >> The code 4.4.1 x86 generating (with -O3 option) for bswap() function I >> mentioned earlier is strange too: >> >> >> ; bswap(unsigned int) >> public _Z5bswapj >> _Z5bswapj proc near >> >> var_4 = dword ptr -4 >> arg_0 = dword ptr 8 >> >> push ebp >> mov ebp, esp >> sub esp, 10h >> mov eax, [ebp+arg_0] >> mov edx, eax >> sar edx, 18h >> mov byte ptr [ebp+var_4], dl >> mov edx, eax >> shr edx, 10h >> mov byte ptr [ebp+var_4+1], dl >> movsx edx, ah >> mov byte ptr [ebp+var_4+3], al >> mov eax, [ebp+var_4] ; returning var_4 >> mov byte ptr [ebp+var_4+2], dl ; set last byte to var_4 >> leave >> retn >> _Z5bswapj endp >> >> >> -- >> >> >> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44260 >> >> > > > -- > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44260 > > -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44260