Topics to be Covered During Classtime
Referencs in () use MU for Muchnick's book and notation from the
bibliography page for articles.
- Introduction and Overview
- The Role of Program Analysis in Software Development
- Forms of Program Analysis
- Formulating Problems as Data Flow Frameworks
- A Graphical Representation of Program Control
- Control Flow Graph (MU ch. 7)
- Call Graph (MU 19.1)
- Supergraph
- Transformations to Control Flow Representations (MU ch. 15,18)
- The Lattice Formulation (MU 8.1-8.3,8.5)
- Example Data Flow Problem Formulations
- Example Uses of Analysis for Transformation (MU ch 12,13,14)
- Properties and Classifications of Data Flow Problems
- Classical Data Flow Analysis Techniques
- Intraprocedural
- Iteration-based (MU 8.4,8.6,8.12)
- Elimination-based (MU 8.7-8.9)
- Interprocedural (MU 11.2, MU ch 19)
- Flow Insensitive, Context Insensitive
- Flow Sensitive, Context Sensitive
- Other Variations on Sensitivity
- Evaluation of Data Flow Analysis Techniques
- Alternate Program Representations for Scalability
- Changes in control flow graph to allow direct connections
(avoid all points)
- Def-use chains (MU 8.10)
- SSA - faster analysis (MU 8.11)
- Sparse evaluation graph
- Dependence flow graph
- Congruence partitioning
- Program Dependence Graph
- Program Dependence Web
- Value dependence graph
- Changes in Supergraph (avoid all quantities simultaneously)
- SDG
- Program summary graph
- Sharir and Pnuelli's graph
- Exploded supergraph
- Alternate Solution Procedures for Scalability
- Avoids all points and all quantities
- Demand Driven
- Duesterwald et.al.
- Horwitz et.al.
- Slotwise - Dhamdhere et.al.
- Partitioning - Avoid all quantities simultaneously
- Using Types - Ruf
- Using pointer-related statements - Zhang et.al.
- Interprocedural
- Relevant Context Inference -
Chatterjee et.al.
- Flow insensitive, context sensitive - Liang et.al.
- Parallelizing the Analysis
- Incremental Analysis
- Gaining Precision with Scalability in Mind
- Path-based Techniques
- Eliminate Paths - improve precision of whole program
- Labeled exploded supergraph and graph reachability - Reps et.al.
- Qualified Data Flow Analysis - Holley and Rosen
- Demand-driven infeasible path elimination via branch correlations (Bodik et.al.)
- Separate Paths - improve the precision on some paths
- Hot-path based Analysis - Ammons and Larus
- CFG unchanged - flow functions changed
- Value Flow Graph - Steffen et.al.
- Value Name Graph - Bodik and Anik
- Pointer Alias Analysis
- Points to Analysis
- Connection Analysis
- Shape Analysis