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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
It must conclude that

  <bb 2>:
  std::basic_ostringstream<char>::basic_ostringstream (&ostr, 16);
  _52 = MEM[(char_type * *)&ostr + 48B];
  _53 = MEM[(char_type * *)&ostr + 56B];
  if (_52 < _53)
    goto <bb 3>;
  else
    goto <bb 4>;

  <bb 3>:
  *_52 = 88;
  _57 = MEM[(char_type * *)&ostr + 48B];
  _58 = _57 + 1;
  MEM[(char_type * *)&ostr + 48B] = _58;
  goto <bb 5>;

  <bb 4>:
  _65 = MEM[(struct basic_streambuf *)&ostr + 8B]._vptr.basic_streambuf;
  _66 = MEM[(int (*__vtbl_ptr_type) () *)_65 + 104B];
  OBJ_TYPE_REF(_66;(struct basic_streambuf)&ostr._M_stringbuf->13)
(&ostr._M_stringbuf, 88);

the call in bb 4 is not possible thus the block gets unreachable.

Reply via email to