https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91258
--- Comment #15 from Martin Sebor <msebor at gcc dot gnu.org> --- The warning only sees the four byte write at the end: MEM[(int *)&D.3146 + 4B] = 24; <<< write past the end I will disable it but my main concern was with the char array: is it valid to transform a 1-element int array in the source into a 4-byte char array like this? (If it is valid in general, warnings issued by LTO that reference source code decls will be confusing if they mention different types than they were declared with.)