------- Comment #8 from rguenth at gcc dot gnu dot org 2009-02-04 21:36 ------- The following works (on the branch, with added NONLOCAL = *NONLOCAL constraint):
ANYTHING = &ANYTHING READONLY = &READONLY ESCAPED = *ESCAPED ESCAPED = ESCAPED + UNKNOWN *ESCAPED = NONLOCAL NONLOCAL = &NONLOCAL NONLOCAL = &ESCAPED NONLOCAL = *NONLOCAL CALLUSED = *CALLUSED CALLUSED = CALLUSED + UNKNOWN INTEGER = &ANYTHING x = &NONLOCAL nl = &NULL n_5 = *x_1 *na_2 = x_1 ESCAPED = x_1 D.1242_6 = *na_2 na_7 = D.1242_6 x_1 = x x_1 = n_5 na_2 = &nl na_2 = na_7 derefaddrtmp.7 = &NULL *na_2 = derefaddrtmp.7 ESCAPED = &NULL ... NULL = { } ANYTHING = { ANYTHING } READONLY = { READONLY } ESCAPED = same as n_5 NONLOCAL = same as n_5 CALLUSED = { } INTEGER = { ANYTHING } x = { NONLOCAL } nl = { NULL ESCAPED NONLOCAL } n_5 = { NULL ESCAPED NONLOCAL } x_1 = same as n_5 na_2 = { NULL ESCAPED NONLOCAL nl } D.1242_6 = { NULL ESCAPED NONLOCAL } na_7 = same as D.1242_6 derefaddrtmp.7 = { NULL } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39100