Administrative stuff - PowerPoint PPT Presentation

About This Presentation
Title:

Administrative stuff

Description:

Initialize all di to the empty set. Store all nodes onto a worklist. while ... apply ... Can we loosen this requirement? Yes, we only require the lattice to ... – PowerPoint PPT presentation

Number of Views:40
Avg rating:3.0/5.0
Slides: 42
Provided by: csewe4
Learn more at: https://cseweb.ucsd.edu
Category:

less

Transcript and Presenter's Notes

Title: Administrative stuff


1
Administrative stuff
  • Office hours After class on Tuesday

2
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
3
Worklist algorithm
  • Initialize all di to the empty set
  • Store all nodes onto a worklist
  • while worklist is not empty
  • remove node n from worklist
  • apply flow function for node n
  • update the appropriate di, and add nodes whose
    inputs have changed back onto worklist

4
Worklist algorithm
let m map from edge to computed value at
edge let worklist work list of nodes for each
edge e in CFG do m(e) for each node n
do worklist.add(n) while (worklist.empty.not)
do let n worklist.remove_any let
info_in m(n.incoming_edges) let info_out
F(n, info_in) for i 0 ..
info_out.length-1 do if (m(n.outgoing_edges
i) ? info_outi) m(n.outgoing_edgesi)
info_outi worklist.add(n.outgoing_
edgesi.dst)
5
Issues with worklist algorithm
6
Two issues with worklist algorithm
  • Ordering
  • In what order should the original nodes be added
    to the worklist?
  • What order should nodes be removed from the
    worklist?
  • Does this algorithm terminate?

7
Order of nodes
  • Topological order assuming back-edges have been
    removed
  • Reverse depth first order
  • Use an ordered worklist

8
1 x ... 2 y ... 3 y ... 4 p ...
... x ... 5 x ... ... y ...
... x ... 6 x ... 7 p ...
... x ... ... y ... 8 y ...
9
Termination
  • Why is termination important?
  • Can we stop the algorithm in the middle and just
    say were done...
  • No we need to run it to completion, otherwise
    the results are not safe...

10
Termination
  • Assuming were doing reaching defs, lets try to
    guarantee that the worklist loop terminates,
    regardless of what the flow function F does

while (worklist.empty.not) do let n
worklist.remove_any let info_in
m(n.incoming_edges) let info_out F(n,
info_in) for i 0 .. info_out.length-1 do
if (m(n.outgoing_edgesi) ? info_outi)
m(n.outgoing_edgesi) info_outi
worklist.add(n.outgoing_edgesi.dst)
11
Termination
  • Assuming were doing reaching defs, lets try to
    guarantee that the worklist loop terminates,
    regardless of what the flow function F does

while (worklist.empty.not) do let n
worklist.remove_any let info_in
m(n.incoming_edges) let info_out F(n,
info_in) for i 0 .. info_out.length-1 do
let new_info m(n.outgoing_edgesi)

info_outi if (m(n.outgoing_edgesi) ?
new_info) m(n.outgoing_edgesi)
new_info worklist.add(n.outgoing_edgesi
.dst)
12
Structure of the domain
  • Were using the structure of the domain outside
    of the flow functions
  • In general, its useful to have a framework that
    formalizes this structure
  • We will use lattices

13
Background material
14
Relations
  • A relation over a set S is a set R µ S S
  • We write a R b for (a,b) 2 R
  • A relation R is
  • reflexive iff
  • 8 a 2 S . a R a
  • transitive iff
  • 8 a 2 S, b 2 S, c 2 S . a R b Æ b R c ) a R c
  • symmetric iff
  • 8 a, b 2 S . a R b ) b R a
  • anti-symmetric iff
  • 8 a, b, 2 S . a R b ) (b R a)

15
Relations
  • A relation over a set S is a set R µ S S
  • We write a R b for (a,b) 2 R
  • A relation R is
  • reflexive iff
  • 8 a 2 S . a R a
  • transitive iff
  • 8 a 2 S, b 2 S, c 2 S . a R b Æ b R c ) a R c
  • symmetric iff
  • 8 a, b 2 S . a R b ) b R a
  • anti-symmetric iff
  • 8 a, b, 2 S . a R b ) (b R a)
  • 8 a, b, 2 S . a R b Æ b R a ) a b

16
Partial orders
  • An equivalence class is a relation that is
  • A partial order is a relation that is

17
Partial orders
  • An equivalence class is a relation that is
  • reflexive, transitive, symmetric
  • A partial order is a relation that is
  • reflexive, transitive, anti-symmetric
  • A partially ordered set (a poset) is a pair (S,)
    of a set S and a partial order over the set
  • Examples of posets (2S, µ), (Z, ), (Z, divides)

18
Lub and glb
  • Given a poset (S, ), and two elements a 2 S and
    b 2 S, then the
  • least upper bound (lub) is an element c such
    thata c, b c, and 8 d 2 S . (a d Æ b d)
    ) c d
  • greatest lower bound (glb) is an element c such
    thatc a, c b, and 8 d 2 S . (d a Æ d b)
    ) d c

19
Lub and glb
  • Given a poset (S, ), and two elements a 2 S and
    b 2 S, then the
  • least upper bound (lub) is an element c such
    thata c, b c, and 8 d 2 S . (a d Æ b d)
    ) c d
  • greatest lower bound (glb) is an element c such
    thatc a, c b, and 8 d 2 S . (d a Æ d b)
    ) d c
  • lub and glb dont always exists

20
Lub and glb
  • Given a poset (S, ), and two elements a 2 S and
    b 2 S, then the
  • least upper bound (lub) is an element c such
    thata c, b c, and 8 d 2 S . (a d Æ b d)
    ) c d
  • greatest lower bound (glb) is an element c such
    thatc a, c b, and 8 d 2 S . (d a Æ d b)
    ) d c
  • lub and glb dont always exists

21
Lattices
  • A lattice is a tuple (S, v, ?, gt, t, u) such
    that
  • (S, v) is a poset
  • 8 a 2 S . ? v a
  • 8 a 2 S . a v gt
  • Every two elements from S have a lub and a glb
  • t is the least upper bound operator, called a
    join
  • u is the greatest lower bound operator, called a
    meet

22
Examples of lattices
  • Powerset lattice

23
Examples of lattices
  • Powerset lattice

24
Examples of lattices
  • Booleans expressions

25
Examples of lattices
  • Booleans expressions

26
Examples of lattices
  • Booleans expressions

27
Examples of lattices
  • Booleans expressions

28
End of background material
29
Back to our example
let m map from edge to computed value at
edge let worklist work list of nodes for each
edge e in CFG do m(e) for each node n
do worklist.add(n) while (worklist.empty.not)
do let n worklist.remove_any let
info_in m(n.incoming_edges) let info_out
F(n, info_in) for i 0 ..
info_out.length do let new_info
m(n.outgoing_edgesi)
info_outi if
(m(n.outgoing_edgesi) ? new_info)
m(n.outgoing_edgesi) new_info
worklist.add(n.outgoing_edgesi.dst)
30
Back to our example
  • We formalize our domain with a powerset lattice
  • What should be top and what should be bottom?

31
Back to our example
  • We formalize our domain with a powerset lattice
  • What should be top and what should be bottom?
  • Does it matter?
  • It matters because, as weve seen, there is a
    notion of approximation, and this notion shows up
    in the lattice

32
Direction of lattice
  • Unfortunately
  • dataflow analysis community has picked one
    direction
  • abstract interpretation community has picked the
    other
  • We will work with the abstract interpretation
    direction
  • Bottom is the most precise (optimistic) answer,
    Top the most imprecise (conservative)

33
Direction of lattice
  • Always safe to go up in the lattice
  • Can always set the result to gt
  • Hard to go down in the lattice
  • So ... Bottom will be the empty set in reaching
    defs

34
Worklist algorithm using lattices
let m map from edge to computed value at
edge let worklist work list of nodes for each
edge e in CFG do m(e) ? for each node n
do worklist.add(n) while (worklist.empty.not)
do let n worklist.remove_any let
info_in m(n.incoming_edges) let info_out
F(n, info_in) for i 0 ..
info_out.length do let new_info
m(n.outgoing_edgesi) t
info_outi if
(m(n.outgoing_edgesi) ? new_info)
m(n.outgoing_edgesi) new_info
worklist.add(n.outgoing_edgesi.dst)
35
Termination of this algorithm?
  • For reaching definitions, it terminates...
  • Why?
  • lattice is finite
  • Can we loosen this requirement?
  • Yes, we only require the lattice to have a finite
    height
  • Height of a lattice length of the longest
    ascending or descending chain
  • Height of lattice (2S, µ)

36
Termination of this algorithm?
  • For reaching definitions, it terminates...
  • Why?
  • lattice is finite
  • Can we loosen this requirement?
  • Yes, we only require the lattice to have a finite
    height
  • Height of a lattice length of the longest
    ascending or descending chain
  • Height of lattice (2S, µ) S

37
Termination
  • Still, its annoying to have to perform a join in
    the worklist algorithm
  • It would be nice to get rid of it, if there is a
    property of the flow functions that would allow
    us to do so

while (worklist.empty.not) do let n
worklist.remove_any let info_in
m(n.incoming_edges) let info_out F(n,
info_in) for i 0 .. info_out.length do
let new_info m(n.outgoing_edgesi) t

info_outi if (m(n.outgoing_edgesi) ?
new_info) m(n.outgoing_edgesi)
new_info worklist.add(n.outgoing_edgesi
.dst)
38
Even more formal
  • To reason more formally about termination and
    precision, we re-express our worklist algorithm
    mathematically
  • We will use fixed points to formalize our
    algorithm

39
Fixed points
  • Recall, we are computing m, a map from edges to
    dataflow information
  • Define a global flow function F as follows F
    takes a map m as a parameter and returns a new
    map m, in which individual local flow functions
    have been applied

40
Fixed points
  • We want to find a fixed point of F, that is to
    say a map m such that m F(m)
  • Approach to doing this?
  • Define ?, which is ? lifted to be a map
  • ? ? e. ?
  • Compute F(?), then F(F(?)), then F(F(F(?))), ...
    until the result doesnt change anymore

41
Fixed points
  • Formally
  • We would like the sequence Fi(?) for i 0, 1, 2
    ... to be increasing, so we can get rid of the
    outer join
  • Require that F be monotonic
  • 8 a, b . a v b ) F(a) v F(b)
Write a Comment
User Comments (0)
About PowerShow.com