FWIW, I'm still looking at this on and off. I beleive the pure function was a red herring, as this example also does the wrong thing:

extern int z;

int foo(int *y)
{
    z = 1;
    *y = 0;
    return z;  // returns 1, even though y could point to z :(
}

Not much joy tracking it down as yet. I've attached the alias information tree dump in case anyone fancies a look. It looks ok to me, but I don't really understand it fully.

As a reminder: this bug is fixed from r119502 on trunk. I'd like to fix it on 4.2.x.


Ned.


--

Attachment: bbb.c.030t.alias1
Description: Binary data

Reply via email to