global value numbering
play

Global Value Numbering Sebastian Hack hack@cs.uni-saarland.de 5. - PowerPoint PPT Presentation

Global Value Numbering Sebastian Hack hack@cs.uni-saarland.de 5. Dezember 2017 Saarland University, Computer Science 1 Value Numbering a := 2 a := 3 x := a + 1 x := a + 1 y := a + 1 Replace second computation of a + 1 with a copy


  1. Global Value Numbering Sebastian Hack hack@cs.uni-saarland.de 5. Dezember 2017 Saarland University, Computer Science 1

  2. Value Numbering a := 2 a := 3 x := a + 1 x := a + 1 y := a + 1 � Replace second computation of a + 1 with a copy from x 2

  3. Value Numbering � Goal: Eliminate redundant computations � Find out if two variables have the same value at given program point – In general undecidable � Potentially replace computation of latter variable with contents of the former � Resort to Herbrand equivalence: – Do not consider the interpretation of operators – Two expressions are equal if they are structurally equal � This lecture: A costly program analysis which finds all Herbrand equivalences in a program and a “light-weight” version that is often used in practice. 3

  4. Herbrand Interpretation � The Herbrand interpretation I of an n -ary operator ω is given as I ( ω ) : T n → T I ( ω )( t 1 , . . . , t n ) := ω ( t 1 , . . . , t n ) Especially, constants are mapped to themselves � With a state σ that maps variables to terms σ : V → T � we can define the Herbrand semantics � t � σ of a term t � σ ( v ) if t = v is a variable � t � σ := I ( ω )( � x 1 � σ, . . . , � x n � σ ) if t = ω ( x 1 , . . . , x n ) 4

  5. Programs with Herbrand Semantics � We now interpret the program with respect to the Herbrand semantics � For an assignment x ← t the semantics is defined by: � x ← t � σ := σ [ � t � σ/ x ] � The state after executing a path p : ℓ 1 , . . . , ℓ n starting with state σ 0 is then: � p � σ 0 := ( � ℓ n � ◦ · · · ◦ � ℓ 1 � ) σ 0 � Two expressions t 1 and t 2 are Herbrand equivalent at a program point ℓ iff ∀ p : r , . . . , ℓ. � t 1 � � p � σ 0 = � t 2 � � p � σ 0 5

  6. Kildall’s Analysis � Track Herbrand equivalences with a forward data flow analysis � A lattice element is an equivalence class of the terms and variables of the program � The equivalence relation is a congruence relation w.r.t. to the operators in our expression language. For each operator ω , each eq. relation R , and e , e 1 , · · · ∈ V ∪ T : ⇒ e 1 R e ′ ⇒ e 2 R e ′ ⇒ e R ( e ′ 1 ω e ′ e R ( e 1 ω e 2 ) = 1 = 2 = 2 ) � Two equivalence classes are joined by intersecting them R ⊔ S := R ∩ S := { ( a , b ) | a R b ∧ a S b } � ⊥ = { ( x , y ) | x , y ∈ V ∪ T } � ⊤ = { ( x , x ) | x ∈ V ∪ T } 6

  7. Kildall’s Analysis Example ⊤ ⊤ ⊤ ⊤ := 2 := 3 a a x := a + 1 x := a + 1 { [ a ] , [ x , a + 1] } { [ a ] , [ x , a + 1] } { [ x , a + 1] } y := a + 1 { [ x , y , a + 1] } 7

  8. Kildall’s Analysis Transfer Functions . . . of an assignment ℓ : x ← t � Compute a new partition checking (in the old partition) who is equivalent if we replace x by t � x ← t � ♯ R := { ( t 1 , t 2 ) | t 1 [ t / x ] R t 2 [ t / x ] } 8

  9. Kildall’s Analysis Example ⊤ := 0 x y := x + 1 ⊥ ⊥ ⊥ y := y + 1 x := x + 1 ⊥ ⊥ 9

  10. Kildall’s Analysis Example ⊤ := 0 x y := x + 1 { [ x ] , [ y , x + 1] } { [ y , x + 1] } { [ y , x + 1] } y := y + 1 x := x + 1 { [ x , y ] } { [ x , y ] } 10

  11. Kildall’s Analysis Comments � Kildall’s Analysis is sound and complete it discovers all Herbrand equivalences in the program � Na¨ ıve implementations suffer from exponential explosion (pathological): – Because the equivalence relation must be congruence, size of eq. classes can explode: R = { [ a , b ] , [ c , d ] , [ e , f ] , [ x , a + c , a + d , b + c , b + d ] , [ y , x + e , x + f , ( a + c ) + e , . . . , ( b + d ) + f ] } � In practice: Use value graph. Do not make congruence explicit in representation. � Theoretical results (Gulwani & Necula 2004): – Even in acyclic programs, detecting all equivalences can lead to exponential-sized value graphs – Detecting only equivalences among terms in the program is polynomial (linear-sized representation of equivalences per program point) 11

  12. Strong Equivalence DAGs (SED) A SED G is a DAG ( N , E ). Let N be the set of nodes of the graph. Every node n is a pair ( V , t ) of a set of variables and a type 1 t ::= ⊥ | c | ⊕ ( n 1 , . . . , n k ) A type ⊕ ( n 1 , . . . , n k ) indicates, that { ( n , n 1 ) , . . . , ( n , n k ) } ∈ E A node n = ( V , t ) in the SED stands for a set of terms T ( n ) T (( V , ⊥ )) = V T (( V , c )) = V ∪ { c } T (( V , ⊕ ( n 1 , . . . , n k ))) = V ∪ {⊕ ( e 1 , . . . , e k ) | e i ∈ T ( n i ) } 1 Note that ⊥ does not denote the “empty set of states” here 12

  13. Strong Equivalence DAGs (SED) From: Gulwani & Necula. A Polynomial-Time Algorithm for Global Value Numbering. SAS 2004 13

  14. The Alpern, Wegman, Zadeck (AWZ) Algorithm � Incomplete � Flow-insensitive – does not compute the equivalences for every program point but sound equivalences for the whole program � Uses SSA – Control-flow joins are represented by φ s – Treat φ s like every other operator (cause for incompleteness) – Source of imprecision � Interpret the SSA data dependence graph as a finite automaton and minimize it – Refine partitions of “equivalent states” – Using Hopcroft’s algorithm, this can be done in O ( e · log e ) 14

  15. The AWZ Algorithm � In contrast to finite automata, do not create two partitions but a class for every operator symbol – Note that the φ ’s block is part of the operator – Two φ s from different blocks have to be in different classes � Optimistically place all nodes with the same operator symbol in the same class – Finds the least fixpoint – You can also start with singleton classes and merge but this will (in general) not give the least fixpoint � Successively split class when two nodes in the class are detected not equivalent 15

  16. The AWZ Algorithm Example x := 0 := 0 y x := x + 1 := y + 1 y 16

  17. The AWZ Algorithm Example x 0 := 0 1 y 0 := 0 x 2 := x 1 + 1 x 1 := φ 2 ( x 2 , x 0 ) 3 2 y 2 := y 1 + 1 y 1 := φ 2 ( y 2 , y 0 ) 17

  18. The AWZ Algorithm Example x 1 y 1 φ 2 φ 2 x 2 x 0 y 2 y 0 + + 0 0 1 1 18

  19. The AWZ Algorithm Example x 1 , y 1 φ x 2 , y 2 x 0 , y 0 + 0 1 19

  20. Kildall compared to AWZ 1 a 0 := 2 a 1 := 3 2 3 x 0 := a 0 + 1 x 1 := a 1 + 1 a 2 := φ 4 ( a 0 , a 1 ) x 2 := φ 4 ( x 0 , x 1 ) 4 y 0 := a 2 + 1 20

  21. Kildall compared to AWZ y 0 x 2 + φ 4 a 2 x 0 x 1 φ 4 + + a 0 a 1 2 3 1 21

  22. Kildall compared to AWZ y 0 x 2 + φ 4 a 2 x 0 x 1 φ 4 + + a 0 a 1 2 3 1 22

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend