> I think we only assume it if the pointer is actually dereferenced, otherwise
> it just breaks too much code in the wild.  And while memcpy dereferences,
> it dereferences it through a char * cast, and thus only the minimum
> alignment is assumed.

Yet the compiler was generating the expected code for Steve's testcase on 
strict-alignment architectures until very recently (GCC 4.5 IIUC) and this 
worked perfectly.

The irony of this very questionable change is that it was made to support some 
corner cases with SSE on x86 but of course the compiler generates the expected 
code for Steve's testcase on x86 because it is _not_ strict-alignment...

-- 
Eric Botcazou

Reply via email to