> It's not desirable since gcc easily loses track of alignment, for instance
> with -mstrict-align
> 
> void foo (char *p, char *q)
> {
>   __builtin_memcpy (p, q, 4);
> }
> 
> generates
> 
>       lbz 7,0(4)
>       lbz 8,1(4)
>       lbz 10,2(4)
>       lbz 9,3(4)
>       stb 7,0(3)
>       stb 8,1(3)
>       stb 10,2(3)
>       stb 9,3(3)
>       blr
> 
> whereas -mno-strict-align gives
> 
>       lwz 9,0(4)
>       stw 9,0(3)
>       blr

I presume you meant:

void foo (int *p, int *q)
{
  __builtin_memcpy (p, q, 4);
}

which will yield the same generated code.  Yes, it's an unfortunate regression 
on strict-alignment platforms, up to 4.5 the generated code was the same.

-- 
Eric Botcazou

Reply via email to