Hi,

Consider this (simplified) test case:

int     bar (int a)
{
       int     b;
       memcpy (&b, &a, sizeof (int));
       return b;
}

gcc 3.4.3 compiles this to (-O3 -fomit-frame-pointer)

bar:
       movl    4(%esp), %eax
       ret

But gcc 4.1.0 (and gcc 4.0.0 as well) generates:

bar:
       subl    $16, %esp
       movl    20(%esp), %eax
       addl    $16, %esp
       ret

The local variable is optimized away, so what's the point adjusting esp?

If I don't use memcpy, but a simple assignment, then both versions
produce the same
(good) code. Host and target are i386-redhat-linux.

Kimmo

Reply via email to