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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |law at gcc dot gnu.org

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
we can't remove the stores because we still can't grok C++ new/delete.

We also fail to "jump-thread" impossible conditions like

  <bb 7>:
  # iftmp.2_40 = PHI <0B(5), _39(6)>
  # prephitmp_43 = PHI <_19(5), pretmp_28(6)>
  _Num_36 = _25 /[ex] 4;
  _44 = (long unsigned int) _25;
  if (_Num_36 != 0)
    goto <bb 8>;
  else
    goto <bb 9>;

  <bb 8>:
  __builtin_memmove (iftmp.2_40, _19, _44);

where 5 -> 7 -> 8 can be threaded to 9 (because otherwise we call memmove
with NULL destination).

Might be implementable with the backwards threader ;)

Reply via email to