http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61034

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Actually it's the conditional free that "clobbers" the value as _83 may
point to the same thing as _86 (so we don't CSE (possible) use-after-frees).

  if (_85 == 0)
    goto <bb 6>;
  else     
    goto <bb 7>;

  <bb 6>:  
  # .MEM_287 = VDEF <.MEM_286>
  # USE = nonlocal
  # CLB = nonlocal
  __builtin_free (_83);

  <bb 7>:  
  # .MEM_40 = PHI <.MEM_286(5), .MEM_287(6)>

and we don't use VN to improve that disambiguation result (we know that
_83 == _2 and that doesn't point to the malloc result in question).

Reply via email to