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 ;)