ABSTRACT

This chapter discusses the Gen-Kill model of bit vector frameworks to general frameworks. It explores the non-separability of flow functions, shows how it can be modeled in terms of Gen and Kill effects, and describes the limitations it imposes on the nature of basic blocks that can be constructed for performing data flow analysis. The chapter presents pointer analyses for stack and static data. These analyses capture relationships between pointers and other variables or pointers. Pointers allow indirect modification of data thereby making it difficult to discover useful information from programs. In bit vector frameworks the data flow information of different entities is independent of each other. However, there are many situations in which the data flow information of an entity could depend on the data flow information of some other entity. Data flow equations provide a declarative mechanism of defining a program analysis and reduce the work to fixed point computation.