SLIDE 1 Points-to Analysis
y = &z;
y z
SLIDE 2 Points-to Analysis
y = &z; x = &y;
x y z
SLIDE 3 Points-to Analysis
y = &z; x = &y; w = &x;
w x y z
SLIDE 4 Points-to Analysis
y = &z; x = &y; w = &x; a = w;
w x y z a
SLIDE 5 Points-to Analysis
y = &z; x = &y; w = &x; a = w;
w x y z a
SLIDE 6 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w;
w x y z a b
SLIDE 7 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w;
w x y z a b
SLIDE 8 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w; c = **a;
w x y z a b c
SLIDE 9 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w; c = **a;
w x y z a b c
SLIDE 10 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w; c = **a; ***w = b;
w x y z a b c
SLIDE 11 Points-to Analysis
y = &z; x = &y; w = &x; a = w; b = *w; c = **a; ***w = b;
w x y z a b c
SLIDE 12
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(a) = {} pt(b) = {} pt(c) = {} pt(d) = {} pt(e) = {}
SLIDE 13
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(a) = {} pt(b) = {} pt(c) = {} pt(d) = {} pt(a) = {b} pt(e) = {}
SLIDE 14
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(a) = {} pt(b) = {} pt(c) = {} pt(d) = {} pt(a) = {b} pt(c) = {b} pt(e) = {}
SLIDE 15
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(a) = {} pt(b) = {} pt(c) = {} pt(d) = {} pt(a) = {b} pt(c) = {b} pt(a) = {b,d} pt(e) = {}
SLIDE 16
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(a) = {} pt(b) = {} pt(c) = {} pt(d) = {} pt(a) = {b} pt(c) = {b} pt(a) = {b,d} pt(e) = {} pt(e) = {b,d}
SLIDE 17
Andersen Example
pt(b) = {} pt(d) = {} pt(c) = {b} pt(a) = {b,d} pt(e) = {b,d} End of first iteration
SLIDE 18
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(b) = {} pt(d) = {} pt(c) = {b} pt(a) = {b,d} pt(e) = {b,d}
SLIDE 19
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(b) = {} pt(d) = {} pt(c) = {b} pt(a) = {b,d} pt(e) = {b,d} pt(c) = {b,d}
SLIDE 20
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(b) = {} pt(d) = {} pt(c) = {b} pt(a) = {b,d} pt(e) = {b,d} pt(c) = {b,d}
SLIDE 21
Andersen Example
a = &b; c = a; a = &d; e = a; pt(a) ⊇ {b} pt(c) ⊇ pt(a) pt(a) ⊇ {d} pt(e) ⊇ pt(a) pt(b) = {} pt(d) = {} pt(c) = {b} pt(a) = {b,d} pt(e) = {b,d} pt(c) = {b,d}
SLIDE 22
Andersen Example
pt(b) = {} pt(d) = {} pt(a) = {b,d} pt(e) = {b,d} pt(c) = {b,d} End of second iteration (finished)
SLIDE 23
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(d) = {}
SLIDE 24
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(a) = {b} pt(d) = {}
SLIDE 25
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(a) = {b} pt(d) = {} pt(c) = {d}
SLIDE 26
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(a) = {b} pt(d) = {} pt(c) = {d} pt(e) = {a}
SLIDE 27
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(a) = {b} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b}
SLIDE 28
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(e) = {} pt(a) = {} pt(c) = {} pt(f) = {} pt(a) = {b} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d}
SLIDE 29
Andersen Example (2)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d} End of first iteration
SLIDE 30
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d}
SLIDE 31
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d}
SLIDE 32
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d}
SLIDE 33
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d} pt(f) = {b,d}
SLIDE 34
Andersen Example (2)
a = &b; c = &d; e = &a; f = a; *e = c; pt(a) ⊇ {b} pt(c) ⊇ {d} pt(e) ⊇ {a} pt(f) ⊇ pt(a) pt(e) ⊇ {z} ⟹ pt(z) ⊇ pt(c) pt(a) ⊇ pt(c)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(f) = {b} pt(a) = {b,d} pt(f) = {b,d}
SLIDE 35
Andersen Example (2)
pt(b) = {} pt(d) = {} pt(c) = {d} pt(e) = {a} pt(a) = {b,d} pt(f) = {b,d} End of second iteration (finished)