https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64150
Richard Biener rguenth at gcc dot gnu.org changed:
What|Removed |Added
Status|UNCONFIRMED |RESOLVED
Resolution|--- |INVALID
--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
bb 2:
p1 = makePimpled (); [return slot optimization]
_7 = p1.d;
p2.d = _7;
p1.d = 0B;
if (_7 != 0B)
goto bb 3;
else
goto bb 4;
bb 3:
Pimpled::destroy (p2);
bb 4:
p2 ={v} {CLOBBER};
_3 = p1.d;
if (_3 != 0B)
there is nothing that prevents makePimpled from storing a reference to p1
somewhere where Pimpled::destroy could modify it.
Thus it is not valid to assume that p1.d is still null at the if.