https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116316
--- Comment #2 from qinzhao at gcc dot gnu.org --- (In reply to Andrew Pinski from comment #1) > <source>:13:6: warning: dereferencing type-punned pointer will break > strict-aliasing rules [-Wstrict-aliasing] > 13 | *(size_t *)(&(array_annotated->b)) = 10; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > -fno-strict-aliasing fixes it. > > You access `array_annotated->b` via size_t (which is most likely `unsigned > long`) and via int. Since long and int are distant types (and not signed > versions of each other) they don't alias. Okay, I see. thanks a lot. I did suspect that this is a source code issue, now confirmed. -:)