if the solution of x includes ANYTHING we fail to add the solution of y to all variables. Testcase (fails on a-i branch):
int i; void __attribute__((noinline)) foo(long b, long q) { int *y; int **a = &y, **x; int ***p; if (b) p = (int ***)q; else p = &a; x = *p; *x = &i; *y = 0; } extern void abort (void); int main() { i = 1; foo (0, 0); if (i != 0) abort (); return 0; } I guess we should warn for dereferenced pointers whos points-to set is empty with "warning: dereferencing uninitialized pointer". -- Summary: PTA constraint processing for *x = y is wrong Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: wrong-code, alias Severity: major Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rguenth at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39074