------- 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

Reply via email to