https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69319
--- Comment #3 from Frediano Ziglio <freddy77 at gmail dot com> --- Created attachment 37376 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37376&action=edit original file split into pure C + main I don't know if may help (I hope so). I split the file into a pure C (no extra include beside a member.h that does not include anything) and a main.c file which just include some standard header. Included the small Makefile and the .i file for member.c. The options are just "-Wall -Wstrict-aliasing -O2 -Wextra", no warning are produced. Note: removing the noreturn attribute or the malloc attribute make the program work correctly. I suspect is some aliasing problem (perhaps I don't consider something and is just my fault).