> 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