[Bug tree-optimization/62171] restrict pointer to struct with restrict pointers parm doesn't prevent aliases
vries at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 22 08:58:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62171
--- Comment #8 from vries at gcc dot gnu.org ---
(In reply to Richard Biener from comment #7)
> I was thinking about sth like
>
> struct X { int i; int * __restrict__ q; };
>
> int foo (X& __restrict__ x, X *p)
> {
> *x.q = 1;
> p->i = 0;
> return *x.q;
> }
>
> int main()
> {
> X x;
> x.q = &x.i;
> return foo (x, &x);
> }
>
I think this example's an invalid use of restrict.
By using restrict in the 'X& __restrict__ x' parameter of foo, we promise that
if the object x points to is modified during foo execution (and it is, by both
assignments) we only access the object using pointers based on x during foo
execution.
p is pointing to the same object, and we access the object via p. But p is not
based on x.
More information about the Gcc-bugs
mailing list