introduction to dataflow analysis - purdue university · dataflow analysis control-flow analysis...
TRANSCRIPT
![Page 1: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/1.jpg)
Introduction to Dataflow Analysis
CS 502Lecture 89/30/08
Slides adapted from Nielson, Nielson, HankinPrinciples of Program Analysis
![Page 2: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/2.jpg)
Context
• CPS exposes details about a program’s control-flow.What about dataflow?
• How do values produced by one expression flow to another?
• Dataflow analysis is concerned with defining relationship among program statements based on production and consumption of values produced by these statements.
2
![Page 3: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/3.jpg)
Example
3
An example program and its naive realisation
Algol-like arrays:
i := 0;while i <= n do
j := 0;while j <= m do
A[i,j] := B[i,j] + C[i,j];j := j+1
od;i := i+1
od
C-like arrays:
i := 0;while i <= n do
j := 0;while j <= m do
temp := Base(A) + i * (m+1) + j;Cont(temp) := Cont(Base(B) + i * (m+1) + j)
+ Cont(Base(C) + i * (m+1) + j);j := j+1
od;i := i+1
od
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 8
![Page 4: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/4.jpg)
Analysis and Optimization
4
Available Expressions analysisand Common Subexpression Elimination
i := 0;while i <= n do
j := 0;while j <= m do
temp := Base(A) + i*(m+1) + j;Cont(temp) := Cont(Base(B) + i*(m+1) + j)
+ Cont(Base(C) + i*(m+1) + j);j := j+1
od;i := i+1
od
!
first computation
""""""#
$$
$$%
re-computations
t1 := i * (m+1) + j;temp := Base(A) + t1;Cont(temp) := Cont(Base(B)+t1)
+ Cont(Base(C)+t1);
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 9
![Page 5: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/5.jpg)
Analysis and Optimization
5
Detection of Loop Invariants and Invariant Code Motion
i := 0;while i <= n do
j := 0;while j <= m do
t1 := i * (m+1) + j;temp := Base(A) + t1;Cont(temp) := Cont(Base(B) + t1)
+ Cont(Base(C) + t1);j := j+1
od;i := i+1
od
!!!!!"
loop invariant t2 := i * (m+1);while j <= m do
t1 := t2 + j;temp := ...Cont(temp) := ...j := ...
od
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 10
![Page 6: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/6.jpg)
Analysis and Optimization
6
Equivalent Expressions analysis and Copy Propagation
i := 0;t3 := 0;while i <= n do
j := 0;t2 := t3;while j <= m do
t1 := t2 + j;temp := Base(A) + t1;Cont(temp) := Cont(Base(B) + t1)
+ Cont(Base(C) + t1);j := j+1
od;i := i+1;t3 := t3 + (m+1)
od
!!!!!"t2 = t3
##
###$
while j <= m do
t1 := t3 + j;
temp := ...;
Cont(temp) := ...;
j := ...
od
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 12
![Page 7: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/7.jpg)
Analysis and Optimization
7
Live Variables analysis and Dead Code Eliminationi := 0;t3 := 0;while i <= n do
j := 0;t2 := t3;while j <= m do
t1 := t3 + j;temp := Base(A) + t1;Cont(temp) := Cont(Base(B) + t1)
+ Cont(Base(C) + t1);j := j+1
od;i := i+1;t3 := t3 + (m+1)
od
dead variable!!!!!!!!!!!"
i := 0;t3 := 0;while i <= n do
j := 0;while j <= m do
t1 := t3 + j;temp := Base(A) + t1;Cont(temp) := Cont(Base(B) + t1)
+ Cont(Base(C) + t1);j := j+1
od;i := i+1;t3 := t3 + (m+1)
od
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 13
![Page 8: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/8.jpg)
Analysis and Optimization
8
Summary of analyses and transformations
Analysis Transformation
Available expressions analysis Common subexpression elimination
Detection of loop invariants Invariant code motion
Detection of induction variables Strength reduction
Equivalent expression analysis Copy propagation
Live variables analysis Dead code elimination
PPA Chapter 1 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 14
![Page 9: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/9.jpg)
Program Analysis Predict program behavior statically (at compile-
time) Goals:
Safe: results of an analysis should be a conservative approximation of a program’s dynamic behavior
Efficient: cost to compute this approximation should not be prohibitive
9
![Page 10: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/10.jpg)
Techniques and Approaches
Dataflow analysis Control-flow analysis
interprocedural analysis Type systems Abstract interpretation
Different approaches to implementing these techniques (algorithmic, semantic, etc.)
Language paradigms
10
![Page 11: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/11.jpg)
Reaching Definition
11
Example program
Program with labels for
elementary blocks:
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;[y := y" 1]5
od;
[y := 0]6
Flowgraph:
!
!
!
!
!
" "
!
[y := x]1
[z := 1]2
[y > 0]3
[z := z ! y]4
[y := y" 1]5
[y := 0]6
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 19
![Page 12: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/12.jpg)
Reaching Definitions
12
Example: Reaching Definitions
The assignment [x := a]! reaches !! ifthere is an execution where x was lastassigned at !
!
!
!
!
!
" "
!
[y := x]1
[z := 1]2
[y > 0]3
[z := z " y]4
[y := y# 1]5
[y := 0]6!
"
"
#$
#
" $%# &
$
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 20
![Page 13: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/13.jpg)
Reaching Definitions
13
Reaching Definitions analysis (1)
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
{(x, ?), (y, ?), (z, ?)}
{(x, ?), (y,1), (z, ?)}
{(x, ?), (y,1), (z,2)}
{(x, ?), (y,1), (z,2)}
{(x, ?), (y,1), (z,2)}
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 21
![Page 14: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/14.jpg)
Reaching Definitions (refinement)
14
Reaching Definitions analysis (2)
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
{(x, ?), (y, ?), (z, ?)}
{(x, ?), (y,1), (z, ?)}
{(x, ?), (y,1), (z,2)} # {(y,5), (z,4)}
{(x, ?), (y,1), (z,2)}
{(x, ?), (y,1), (z,4)}
{(x, ?), (y,5), (z,4)}
{(x, ?), (y,1), (z,2)}
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 22
![Page 15: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/15.jpg)
Reaching Definitions (optimal)
15
Reaching Definitions analysis (3)
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
{(x, ?), (y, ?), (z, ?)}
{(x, ?), (y,1), (z, ?)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)} # {(y,5), (z,4)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)}
{(x, ?), (y,1), (y,5), (z,4)}
{(x, ?), (y,5), (z,4)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)}
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 23
![Page 16: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/16.jpg)
Reaching Definitions (safe, not optimal)
16
A safe solution — but not the best
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
{(x, ?), (y, ?), (z, ?)}
{(x, ?), (y,1), (z, ?)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)}
{(x, ?), (y,1), (y,5), (z,2) , (z,4)}
{(x, ?), (y,1) , (y,5), (z,2) , (z,4)}
{(x, ?), (y,1), (y,5), (z,2), (z,4)}
{(x, ?), (y,6), (z,2), (z,4)}
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 25
![Page 17: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/17.jpg)
Reaching Definitions (unsafe)
17
An unsafe solution
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
{(x, ?), (y, ?), (z, ?)}
{(x, ?), (y,1), (z, ?)}
{(x, ?), (y,1), (z,2), (y,5), (z,4)}
{(x, ?), (y,1) , (y,5), (z,2) , (z,4)}
{(x, ?), (y,1) , (y,5), (z,4)}
{(x, ?), (y,5), (z,4)}
{(x, ?), (y,1) , (y,5), (z,2) , (z,4)}
{(x, ?), (y,6), (z,2), (z,4)}
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 26
![Page 18: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/18.jpg)
Approach Automate the analysis
Define a set of dataflow equations Solve the equations using an iterative fixpoint
algorithm Solution is guaranteed to be the “smallest”
solution that is safe: No unnecessary overapproximation
18
![Page 19: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/19.jpg)
Equations
19
Two kinds of equations
[x := a]!!
!
RD!(!)
RD•(!)
[...]!1 [...]!2
[...]!
""
""#
$$
$$%
RD•(!1) RD•(!2)
RD!(!)
RD!(!) \ {(x, !") | !" # Lab} $ {(x, !)} RD•(!1) $ RD•(!2) = RD!(!)= RD•(!)
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 28
![Page 20: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/20.jpg)
Dataflow Equations
20
Flow through assignments and tests
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
RD•(1) = RD#(1) \ {(y, !) | ! $ Lab} % {(y,1)}
RD•(2) = RD#(2) \ {(z, !) | ! $ Lab} % {(z,2)}
RD•(3) = RD#(3)
RD•(4) = RD#(4) \ {(z, !) | ! $ Lab} % {(z,4)}
RD•(5) = RD#(5) \ {(y, !) | ! $ Lab} % {(y,5)}
RD•(6) = RD#(6) \ {(y, !) | ! $ Lab} % {(y,6)}
Lab = {1,2,3,4,5,6} 6 equations inRD#(1), · · · , RD•(6)
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 29
![Page 21: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/21.jpg)
Control-flow Considerations
21
Flow along the control
[y := x]1;
[z := 1]2;
while [y > 0]3 do
[z := z ! y]4;
[y := y" 1]5
od;
[y := 0]6
!
!
!
!
!
!
!
!
RD#(1) = {(x, ?), (y, ?), (z, ?)}
RD#(2) = RD•(1)
RD#(3) = RD•(2) $ RD•(5)
RD#(4) = RD•(3)
RD#(5) = RD•(4)
RD#(6) = RD•(3)
Lab = {1,2,3,4,5,6} 6 equations inRD#(1), · · · , RD•(6)
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 30
![Page 22: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/22.jpg)
Summary of Equations
22
Summary of equation system
RD•(1) = RD!(1) \ {(y, !) | ! " Lab} # {(y,1)}RD•(2) = RD!(2) \ {(z, !) | ! " Lab} # {(z,2)}RD•(3) = RD!(3)
RD•(4) = RD!(4) \ {(z, !) | ! " Lab} # {(z,4)}RD•(5) = RD!(5) \ {(y, !) | ! " Lab} # {(y,5)}RD•(6) = RD!(6) \ {(y, !) | ! " Lab} # {(y,6)}
RD!(1) = {(x, ?), (y, ?), (z, ?)}RD!(2) = RD•(1)
RD!(3) = RD•(2) # RD•(5)
RD!(4) = RD•(3)
RD!(5) = RD•(4)
RD!(6) = RD•(3)
• 12 sets: RD!(1), · · · , RD•(6)
all being subsets of Var$ Lab
• 12 equations:RDj = Fj(RD!(1), · · · , RD•(6))
• one function:F : P(Var$ Lab)12 %
P(Var$ Lab)12
• we want the least fixed point ofF — this is the best solution tothe equation system
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 31
![Page 23: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/23.jpg)
Solving the Equations
23
How to solve the equations
A simple iterative algorithm
• InitialisationRD1 := !; · · · ;RD12 := !;
• Iterationwhile RDj "= Fj(RD1, · · · , RD12) for some j
do
RDj := Fj(RD1, · · · , RD12)
The algorithm terminates and computes the least fixed point of F.
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 32
![Page 24: Introduction to Dataflow Analysis - Purdue University · Dataflow analysis Control-flow analysis interprocedural analysis Type systems Abstract interpretation Different approaches](https://reader034.vdocuments.net/reader034/viewer/2022042710/5f6c2042b8c32f7082206234/html5/thumbnails/24.jpg)
Iterative Process
24
The example equations
RD! 1 2 3 4 5 60 " " " " " "1 x?, y?, z? " " " " "2 x?, y?, z? " " " " "3 x?, y?, z? x?, y1, z? " " " "4 x?, y?, z? x?, y1, z? " " " "5 x?, y?, z? x?, y1, z? x?, y1, z2 " " "6 x?, y?, z? x?, y1, z? x?, y1, z2 " " "...
......
......
......
RD• 1 2 3 4 5 60 " " " " " "1 " " " " " "2 x?, y1, z? " " " " "3 x?, y1, z? " " " " "4 x?, y1, z? x?, y1, z2 " " " "5 x?, y1, z? x?, y1, z2 " " " "6 x?, y1, z? x?, y1, z2 x?, y1, z2 " " "...
......
......
......
The equations:
RD•(1) = RD!(1) \ {(y, !) | · · ·} # {(y,1)}RD•(2) = RD!(2) \ {(z, !) | · · ·} # {(z,2)}RD•(3) = RD!(3)
RD•(4) = RD!(4) \ {(z, !) | · · ·} # {(z,4)}RD•(5) = RD!(5) \ {(y, !) | · · ·} # {(y,5)}RD•(6) = RD!(6) \ {(y, !) | · · ·} # {(y,6)}
RD!(1) = {(x, ?), (y, ?), (z, ?)}RD!(2) = RD•(1)
RD!(3) = RD•(2) # RD•(5)
RD!(4) = RD•(3)
RD!(5) = RD•(4)
RD!(6) = RD•(3)
PPA Section 1.3 c! F.Nielson & H.Riis Nielson & C.Hankin (May 2005) 33