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