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

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think the problem is mainly:
  MEM[(struct ScXMLTableColContext *)this_29(D) clique 1 base 1].nColCount =
_15;
vs.
  _15 = MEM[(const int &)_116 clique 1 base 0];
Both have the same clique, but different base.
std::min<sal_Int32>(nColCount, MAXCOLCOUNT)
returns a reference, and I bet if this argument was explicitly __restrict, that
would be invalid, referencing *this through some other pointer (reference in
this case).  this argument is not restrict though, and it can alias
references/pointers within the constructor, e.g.
struct S { int s; S (S &, S *); };
S *foo (S *);
S::S (S &x, S *y)
{
  // x.s can't alias this->s
  // y->s can't alias this->s
  S *p = foo (this);
  // p->s can alias this->s
}

Reply via email to