dataflow analysis jonathan aldrich
play

Dataflow Analysis - PowerPoint PPT Presentation

Dataflow Analysis Jonathan Aldrich


  1. ������������������������ Dataflow Analysis Jonathan Aldrich ����������������� ������������������������������������������ � �����������������������

  2. Outline • Introduction to Dataflow Analysis • Dataflow Analysis Frameworks • Lattices • Abstraction functions • • Control flow graphs Control flow graphs • Flow functions • Worklist algorithm • Example Dataflow Analyses • Constant Propagation • Reaching Definitions • Live Variable Analysis ����������������� ������������������������������������������ � �����������������������

  3. Motivation: Dataflow Analysis • Catch interesting errors • Non*local: x is null, x is written to y, y is dereferenced • Optimize code • Reduce run time, memory usage- • Soundness required • • Safety*critical domain Safety*critical domain • Assure lack of certain errors • Cannot optimize unless it is proven safe • Correctness comes before performance • Automation required • Dramatically decreases cost • Makes cost/benefit worthwhile for far more purposes ����������������� ������������������������������������������ � �����������������������

  4. Dataflow analysis • Tracks value flow through program • Can distinguish order of operations • Did you read the file after you closed it? • Does this null value flow to that dereference? • Differs from AST walker • Walker simply collects information or checks patterns • Tracking flow allows more interesting properties • • Abstracts values Abstracts values • Chooses abstraction particular to property • Is a variable null? • Is a file open or closed? • Could a variable be 0? • Where did this value come from? ����������������� ������������������������������������������ �����������������������

  5. Zero Analysis • Could variable x be 0? • Useful to know if you have an expression y/x • In C, useful for null pointer analysis • Program semantics Stack environment η maps every variable to an • integer • • Semantic abstraction Semantic abstraction σ maps every variable to non zero (NZ), zero(Z), • or maybe zero (MZ) Abstraction function for integers α ZI : • α ZI (0) = Z • α ZI ( n ) = NZ for all n ≠ 0 • • We may not know if a value is zero or not • Analysis is always an approximation • Need MZ option, too ����������������� ������������������������������������������ � �����������������������

  6. Zero Analysis Example σ =[] x := 10; y := x; z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ ! �����������������������

  7. Zero Analysis Example σ =[] σ =[x ↦ α ZI (10)] x := 10; y := x; z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ " �����������������������

  8. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; y := x; z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ � �����������������������

  9. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ σ (x) ] y := x; z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ � �����������������������

  10. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ �� �����������������������

  11. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ α ZI (0)] z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ �� �����������������������

  12. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ �� �����������������������

  13. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] while y > *1 do while y > *1 do x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ �� �����������������������

  14. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] while y > *1 do while y > *1 do σ =[x ↦ MZ,y ↦ NZ,z ↦ Z] x := x / y; y := y*1; z := 5; ����������������� ������������������������������������������ � �����������������������

  15. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] while y > *1 do while y > *1 do σ =[x ↦ MZ,y ↦ NZ,z ↦ Z] x := x / y; σ =[x ↦ MZ,y ↦ MZ,z ↦ Z] y := y*1; z := 5; ����������������� ������������������������������������������ �� �����������������������

  16. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] while y > *1 do while y > *1 do σ =[x ↦ MZ,y ↦ NZ,z ↦ Z] x := x / y; σ =[x ↦ MZ,y ↦ MZ,z ↦ Z] y := y*1; σ =[x ↦ MZ,y ↦ MZ,z ↦N Z] z := 5; ����������������� ������������������������������������������ �! �����������������������

  17. Zero Analysis Example σ =[] σ =[x ↦ NZ] x := 10; σ =[x ↦ NZ,y ↦ NZ] y := x; σ =[x ↦ NZ,y ↦ NZ,z ↦ Z] z := 0; σ =[x ↦ MZ,y ↦ MZ,z ↦M Z] σ =[x ↦ MZ,y ↦ MZ,z ↦M Z] while y > *1 do while y > *1 do σ =[x ↦ MZ,y ↦ NZ,z ↦ Z] x := x / y; σ =[x ↦ MZ,y ↦ MZ,z ↦ Z] y := y*1; σ =[x ↦ MZ,y ↦ MZ,z ↦N Z] z := 5; ����������������� ������������������������������������������ �" �����������������������

Recommend


More recommend