https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70128
--- Comment #7 from Richard Henderson <rth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #5) > I still say this is undefined even with -fno-strict-aliasing because > patching a function is undefined. Oh please. I think that's short-sighted. I don't see how this differs materially from e.g. const int x; void f(void) { *(int *)&x = 1; } and we don't delete that store. We need a mode in which it's possible to do things that aren't valid in "normal" C. We've more-or-less settled on -fn-s-a as an escape whereby treating all memory as a collection of bytes is valid.