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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jsm28 at gcc dot gnu.org

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the C standard isn't explicit here but if I read "based on" as "a pointer
q is based on p if adjusting p changes q" then it's based on.  If the
change to q is supposed to be the same as the change to p then this case
wouldn't be covered.  Joseph?  C testcase:

struct S { int a; int *p; };
int foo (struct S * restrict p)
{
  p->a = 1;
  p->p->b = 2;
  return p->a;
}

int main()
{
  struct S s;
  s.p = &s.a;
  if (foo (&s) != 2)
    abort ();
}

so can S->p point to S->a in foo()?

Reply via email to