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.
>
>
> --
>

Reply via email to