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. --
bbb.c.030t.alias1
Description: Binary data
