Static Analysis, Assignment #6
Consider a program in the while fragment of our tiny imperative language. A points-to analysis produces a map from Vars to Targets. For a program P, we denote the map computed by Andersen's analysis by Andersen(P). The shape analysis can also be used to compute a flow-sensitive points-to map for every program point v which we denote Shape(P,v). Given a points-to map pt, the null pointer analysis computes for every program point v a map nullable(pt,v) telling about possible null pointers. A concrete program P is called boostable, if it is the case that for some program point v and variable x:
nullable(Shape(P,v),v)(x)=NN
nullable(Andersen(P),v)(x)=?
so that P is unfairly rejected using Andersen but accepted using shape analysis.
Show that the following program is boostable:
q = malloc; y = &q; x = *y; p = null; y = &p; *x = p;
