Linux and aliasing?
Linus Torvalds
torvalds@transmeta.com
Wed Jun 30 15:43:00 GMT 1999
On Sun, 6 Jun 1999, Ross Harvey wrote:
>
> Why? Because it's illegal for a reason, and the alpha platform I support
> has alignment requirements for which I have a guarantee that the memcpy
> approach will work and be reasonably efficient. The cast can generate a
> kernel alignment fault and will either panic or have a hideous run-time
> fixup cost.
Indeed. Which is why we have "get_unaligned()" for example - which does
what the name suggests. Exactly because memcpy() is _not_ acceptable for a
fairly obvious syntactic reason.
I certainly would not knowingly ever apply a patch that adds memcpy's like
in the example. They may exist in drivers where I don't care what stupid
things people do, but it's not something I consider acceptable coding
practice for any regular stuff.
I'd be pretty impressed if gcc _were_ able to generate the correct code
for the example specified - that would be fairly impressive in itself.
Currently that's not the case. And if I were a compiler guy, I'd try my
best to encourage people to use other constructs and making sure they work
better.
Linus
More information about the Gcc
mailing list