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

--- Comment #8 from Martin Sebor <msebor at gcc dot gnu.org> ---
Right.  The warning pass sees this:

  <bb 12> [local count: 1073612976]:
  __dnew ={v} {CLOBBER};
  D.29156 ={v} {CLOBBER};
  D.29152 ={v} {CLOBBER};
  if (&str.D.19306._M_local_buf != _23)
    goto <bb 13>; [53.47%]
  else
    goto <bb 14>; [46.53%]

  <bb 13> [local count: 574060859]:
  _5 = str.D.19306._M_allocated_capacity;
  _3 = _5 + 1;
  operator delete (_23, _3);

  <bb 14> [local count: 1073612977]:
  str ={v} {CLOBBER};
  return _23;

Maybe the alias oracle could be put to use here after all to improve things.

Reply via email to