https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58483

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
Oh, and with late FRE even the original testcase now works.  DSE fails to
eliminate the memcpy () and thus consequently the stores to the temporary
array.  We don't have DECL_IS_OPERATOR_DELETE it seems and there's
no clobber of the associated memory before it that could help.  There's
also EH that I'm not sure will interfere with DSE of the temporary array
stores.

  __BB(2,guessed_local(118111600)):
  D_29441[0ul] = 10;
  D_29441[1ul] = 20;
  D_29441[2ul] = 30;
  _34 = operator new (12ul);
  goto __BB3(precise(134217728));

  __BB(3,guessed_local(118078057)):
  _32 = _34 + 12ul;
  __builtin_memcpy (_34, &D_29441, 12ul);
  __l ={v} {CLOBBER};
  _44 = _34 + 4ul;
  _47 = _44 + 4ul;
  operator delete (_34);
  D_29454 ={v} {CLOBBER};
  D_29454 ={v} {CLOBBER};
  D_29441 ={v} {CLOBBER};
  return 160;

  __BB(4,precise(0)):
L7:
  __MEM <struct _Vector_base> ((struct _Vector_base *)&D_29454) ={v} {CLOBBER};
  resx 13


I somehow remember a bug or even patches about the missing
DECL_IS_OPERATOR_DELETE?

Reply via email to