------- Comment #2 from dirtysalt1987 at gmail dot com  2010-04-17 08:11 -------
(In reply to comment #1)
> You should make the struct packed, because otherwise you are accessing it
> unaligned.
>

I think the main problem coming from that GCC replace the 'strlen' function
with the following code.

.L2:
        movl    (%ecx), %eax //$ecx is the beginning of string..
        addl    $4, %ecx //seems to access the content in 4 bytes each time.
        leal    -16843009(%eax), %edx
        notl    %eax
        andl    %eax, %edx
        andl    $-2139062144, %edx
        je      .L2

But it seems the piece of code can only be used when the valid memory size is
4*N,otherwise it will make a 'Invalid read'...

So under what sitaution, GCC will replace 'strlen' call with the above code. 


-- 


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

Reply via email to