memcpy to an unaligned address
Shaun Jackman
sjackman@gmail.com
Wed Aug 3 18:15:00 GMT 2005
On 8/3/05, Richard Henderson <rth@redhat.com> wrote:
> It is nevertheless correct. Examine all of the parts of the expression.
>
> In particular, "&s->b". What type does it have? In an ideal world, it
> would be "pointer to unaligned integer". But we have no such type in
> our type system, so it is "pointer to integer". This expression is ONLY
> THEN passed to memcpy. At which point we query the argument for its
> alignment, and get the non-intuitive result.
>
> If you instead pass "s" to memcpy, you should get the correct unaligned
> copy. If that isn't happening, that's a bug.
I'm not sure I understood the last line. s is a structure, and its
address is aligned. How would you pass it to memcpy, and why would it
generate an unaligned copy?
Cheers,
Shaun
More information about the Gcc
mailing list