On Wed, Aug 26, 2009 at 12:50 PM, Ned Gill<thomas.g...@csr.com> wrote: > > 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.
Sorry, you are hitting some major latent problems there. The affected piece got a complete rewrite for 4.3, an isolated fix is likely not easily possible. The above problem is that NONLOCAL is broken - it should have used the SMT for anything instead. The code in 4.4 is somewhat sane, still corner cases are incorrect there, hopefully fixed on trunk. Richard. > > Ned. > > > -- >