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

--- Comment #23 from vries at gcc dot gnu.org ---
(In reply to jos...@codesourcery.com from comment #22)
> On Fri, 25 Sep 2015, vries at gcc dot gnu.org wrote:
> 
> > Standard: "Let D be a declaration of an ordinary identifier that provides a
> > means of designating an object P as a restrict-qualified pointer to type T."
> > 
> > Say D is "int *__restrict__ *__restrict__ fpp"
> > 
> > Does this designate as a restrict-qualified pointer":
> > 1. both objects fpp and *fpp, or
> 
> Both objects.  And also objects fpp[1], fpp[-1], etc., if they exist.

Ok, understood.

Then indeed this bit of the analysis was missing:

Restrict declaration D: "int *__restrict__ *__restrict__ fpp"
Type T: int
Object P: *fpp (in other words, gp)
Block B: f function block
Lvalues: *fp and *fp2
Object designated by lvalues: ha
Object ha modified during execution of B: yes
Object *fpp considered modified during execution of B: yes
&Lvalues: pointer expression fp and fp2
&Lvalues based on object P: fp yes, fp2 no. Modifying the value of *fpp during
                            B has no effect on the value of fp2.
Conclusion: Invalid example.

Reply via email to