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