https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93745
--- Comment #4 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Placement new is translated to a plain pointer assignment on GIMPLE, so optimizers cannot distinguish programs that had placement new from programs that did not. (in C we need memory from malloc to be reusable, so imagine that instead of 'double d' the example had a store via a 'double *')