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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-02-26
                 CC|                            |rguenth at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
I believe there's a dup somewhere.  Basically function calls are not
annotated with {base,clique} (our implementation detail exposing __restrict
to the IL).  To elaborate further to successfully mark a function call
with clique == 1 and base == 0 we have to prove the pointer marked restrict
doesn't escape the function through calls since I belive that for

int *p;
void g() { *p = 1; }
void f(int *q) { p = q; }

int foo(const int* x, void g())
  {
      f(x);
      int result = *x;
      g();
      result += *x;
      return result;
  }

the access in g is still based on x since the above is equivalent to

  int foo(const int* x, void g())
  {
      int *p = x;
      int result = *x;
      *p = 1;
      result += *x;
      return result;
  }

letting aside eventual issues with the const qualification of *x.

Reply via email to