https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97151
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> --- It's caused by what was mentioned as 2) which transforms to: _6 = operator new [] (40); __builtin_memset (_6, 0, 40); operator delete [] (_6); So there's a use of _6 and we probably can't remove it as memset can potentially access NULL pointer if operator new [] fails.