https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98130
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. The issue is that placement new is _not_ __attribute__((malloc)), it makes PTA consider the object not escaping and then we have DSE do ;; Function append (_ZL6appendPi, funcdef_no=1, decl_uid=2355, cgraph_uid=2, symbol_order=3) Deleted dead store: MEM[(int * *)_4] = value_5(D); __attribute__((always_inline)) void append (int * value) { void * _2; void * _4; <bb 2> : _2 = p; _4 = operator new (8, _2); return; }