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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
We diagnose

MEM[(struct _Alloc_hider *)0B]._M_p = 16B;

that's conditional on if (_178 == 0B) so probably constant propagated from
that.  That on the other hand is conditional on if (_178 != _179) with

_178 = unique.D.69649._M_impl.D.68955._M_finish;
_179 = unique.D.69649._M_impl.D.68955._M_end_of_storage;

from vector::insert:

    insert(iterator __position, const value_type& __x)
#endif
    { 
      const size_type __n = __position - begin();
      if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
        if (__position == end())
          { 
            _GLIBCXX_ASAN_ANNOTATE_GROW(1);
            _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,
                                     __x);
            ++this->_M_impl._M_finish;
            _GLIBCXX_ASAN_ANNOTATE_GREW(1);

for some reason __position is NULL here, from iin.iter._M_current = 0B; it
seems.

I'm a bit lost here.

Reply via email to