https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94293
--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> --- Or just void f(){ int*p=new int[1]; *p=42; delete[] p; } while it does optimize for void f(){ int*p=new int; *p=42; delete p; } because the front-end gives us a clobber before operator delete.