Lecture 4: Data-Flow Analysis (contd.)
Transcript of Lecture 4: Data-Flow Analysis (contd.)
Lecture 4: Data-Flow Analysis(contd.)
17-355/17-655/17-819: Program AnalysisRohan Padhye and Jonathan Aldrich
February 11, 2021
* Course materials developed with Claire Le Goues
1(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
Random Facts #1
2(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
exec(s:='print("exec(s:=%r)"%s)')Python 3.8:
βYou are hereβ maps donβt lie
What mathematical concept is common to both these facts?
Example of Zero Analysis: Looping Code
3(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
Example of Zero Analysis: Looping Code
4(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
Example of Zero Analysis: Looping Code
5(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
Fixed point of Flow Functions
6(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
(π5, π6, π7, β¦ , π8) β9! (πβ²5, πβ²6, πβ²7, β¦ , πβ²8)
P0
πβ²6 = π: π₯ β 10 (π5)
πβ²7 = π: π¦ β 0 (π6)
πβ²; = π: π₯ β π¦ (π<)
πβ²5 = π5
πβ²= = π7 β π>
πβ²< = π: if π₯ = 10 goto 7 ?(π=)
πβ²@ = π: if π₯ = 10 goto 7 A(π=)
β¦
Fixed point of Flow Functions
7(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
(π5, π6, π7, β¦ , π8) β9! (πβ²5, πβ²6, πβ²7, β¦ , πβ²8)
πβ²6 = π: π₯ β 10 (π5)
πβ²7 = π: π¦ β 0 (π6)
πβ²; = π: π₯ β π¦ (π<)
πβ²5 = π5
πβ²= = π7 β π>
πβ²< = π: if π₯ = 10 goto 7 ?(π=)
πβ²@ = π: if π₯ = 10 goto 7 A(π=)
β¦
(π!, π", π#, β¦ , π$) = π%(π!, π", π#, β¦ , π$)Fixed point!
Correctness theorem:If data-flow analysis is well designed*, thenany fixed point of the analysis is sound.
* we will define these properties and prove this theoremin two weeks!
More on joins and lattices
8(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
(π5, π6, π7, β¦ , π8) β9! (πβ²5, πβ²6, πβ²7, β¦ , πβ²8)
πβ²6 = π: π₯ β 10 (π5)
πβ²7 = π: π¦ β 0 (π6)
πβ²; = π: π₯ β π¦ (π<)
πβ²5 = π5
πβ²= = π7 β π>
πβ²< = π: if π₯ = 10 goto 7 ?(π=)
πβ²@ = π: if π₯ = 10 goto 7 A(π=)
β¦
Hold up! How do you
More on joins and lattices
9(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
πβ²= = π7 β π>
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
What should be the initial value for π! ????
P0
More on joins and lattices
10(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
Enter: β₯ (βbottomβ)
β₯β πβ₯β π = π
for all π β πΏ:π β β€π β β€ = β€
A lattice with both β₯ and β€ defined is called a Complete Lattice
What would the complete lattice for Zero Analysis look like?
More on joins and lattices
11(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
π: πππ β πΏ where πΏ = {π,π, β₯, β€}
π( β π) = { π₯ β¦ π( π₯ β π) π₯ , π¦ β¦ π( π¦ β π) π¦ }
π( β π) = ???
Exercise: Define lifted β in terms of ordering on πΏ
More on joins and lattices
12(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
{xβ¦ β€, yβ¦ β€}
{xβ¦Z, yβ¦ β€} {xβ¦N, yβ¦ β€} {xβ¦ β€, yβ¦Z} {xβ¦ β€, yβ¦N}
β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦ β¦
{xβ¦ β€, yβ¦β₯} {xβ¦Z, yβ¦Z} {xβ¦Z, yβ¦N} β¦ β¦ β¦
{xβ¦Z, yβ¦β₯} {xβ¦N, yβ¦β₯} {xβ¦β₯, yβ¦Z} {xβ¦β₯, yβ¦N}
{xβ¦β₯, yβ¦β₯}
Lifting a complete lattice gives another complete lattice
Running a Data Flow Analysis
13(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
β₯ β₯β₯ β₯β₯ β₯β₯ β₯β₯ β₯β₯ β₯
β₯ β₯β₯ β₯β₯ β₯
P0
Running a Data Flow Analysis
14(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
πβ²= = π7 β π>
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
β₯ β₯β₯ β₯β₯ β₯β₯ β₯β₯ β₯β₯ β₯
P0
Running a Data Flow Analysis
15(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
πβ²= = π7 β π>
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
Running a Data Flow Analysis
16(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
πβ²= = π7 β π>
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
Running a Data Flow Analysis
17(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10P1
P2P3
P4
P5
P7
7:π₯ β π¦
P6
P8
T
F
P9
P0
What order to process worklist nodes in?β’ Random? Queue? Stack?β’ Any order is valid (!!)β’ Some orders are better in practice
o Topological sorts are niceo Explore loops inside outo Reverse postorder!
22(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
Exercise: Apply Kildallβs Worklist Algorithm for Zero Analysis
23(c) 2021 J. Aldrich, C. Le Goues, R. Padhye
2:π¦ β 0
3:ifπ₯ = 0 goto 7
4: π¦ β 1
6:goto 3
5: π₯ β π₯ β 1
1:π₯ β 10
7:π₯ β π¦
T
F