------- Comment #5 from dberlin at gcc dot gnu dot org  2009-02-03 14:16 -------
Subject: Re:  PTA constraint processing for *x = 
        y is wrong

There used to be a *ANYTHING = ANYTHING constraint + ANYTHING
containing all the variables pointing to ANYTHING that would have
taken care of this.
You certainly don't want to dynamically add all variables at solving
time yourself, since that can't be optimized.

On Tue, Feb 3, 2009 at 4:17 AM, rguenth at gcc dot gnu dot org
<gcc-bugzi...@gcc.gnu.org> wrote:
>
>
> ------- Comment #4 from rguenth at gcc dot gnu dot org  2009-02-03 09:17 
> -------
> Yes, but as the store to y is via *x and x points to { ANYTHING } (via the
> non-pointer (int ***)q) only (as x already includes ANYTHING we do not add
> a for the second constraint), so for *x = &i we fail to add a to y.
>
> For reference, here are the constraints:
>
> a = &y
> p_4 = &ANYTHING
> p_1 = p_4
> p_1 = &a
> x_6 = *p_1
> derefaddrtmp.9 = &i
> *x_6 = derefaddrtmp.9
> y.0_7 = y
>
> and the solutions:
>
> a = { y }
> y = same as y.0_7
> p_4 = { ANYTHING }
> p_1 = { ANYTHING a }
> x_6 = { ANYTHING }
> i = { }
> derefaddrtmp.9 = { i }
> y.0_7 = { }
>
> while correct would be if everything would point to at least i (through
> the effective *ANYTHING = &i constraint)
>
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39074
>
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug, or are watching someone who is.
>


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39074

Reply via email to