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