------- Comment #14 from yotambarnoy at gmail dot com 2010-09-02 20:47 ------- Getting back to the original question, I did some reading online and I can't figure out why this breaks the strict aliasing rules.
Isn't void * some kind of special case? Shouldn't I be able to convert it to whatever I need within the function without breaking aliasing? I think the problem is that gcc assumes that I want alignment (for the uint32 * inside the struct) and doesn't realize I've used PACKED, so it decides that it's undefined behavior. What do you guys think? This aliasing topic is so confusing. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45462