Topic-IC Dataflow Analysis

Topic-IC Dataflow Analysis

Topic-I-C Dataflow Analysis 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 1 Global Dataflow Analysis Motivation We need to know variable def and use information between basic blocks for: • constant folding • dead-code elimination • redundant computation elimination • code motion • induction variable elimination • build data dependence graph (DDG) • etc. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 2 Topics of DataFlow Analysis • Reaching definition • Live variable analysis • ud-chains and du-chains • Available expressions • Others .. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 3 Definition and Use 1. Definition & Use 푆: 푣1 = … 푣2 푆 is a “definition” of 푣1 푆 is a “use” of 푣2 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 4 Compute Def and Use Information of a Program P? Case 1: P is a basic block ? Case 2: P contains more than one basic blocks ? 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 5 Points and Paths B1 points in a basic block: d1: i := m-1 - between statements d : j := n 2 - before the first statement d3: a := u1 - after the last statement B2 d4: i := i+1 B3 d5: j := j+1 In the example, how many points basic block B1, B2, B3, and B5 have? B4 B5 B6 B1 has four, B2, B3, and B5 d : a := u2 6 have two points each. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 6 Points and Paths B1 d1: i := m-1 A path is a sequence of points d : j := n 2 p1, p2, …, pn such that either: d3: a := u1 (i) if pi immediately precedes S, B2 than pi+1 immediately follows S. d4: i := i+1 (ii) or pi is the end of a basic block and pi+1 is the beginning of a successor block B3 d : j := j+1 5 In the example, is there a path from B4 the beginning of block B5 to the beginning of block B6? B5 B6 Yes, it travels through the end point d : a := u2 6 of B5 and then through all the points in B2, B3, and B4. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 7 Reach and Kill Kill a definition d1 of a variable v d : x := … 1 is killed between p1 and p2 if in every path from p1 to p2 there is another definition of v. Reach a definition d reaches a point p d2 : x := … if a path d p, and d is not killed along the path In the example, do d1 and d2 reach the both d1, d2 reach point points and ? but only d1 reaches point 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 8 Reach Example S0: PROGRAM S1: READ(L) 1 B1 S2: N = 0 S3: K = 0 S4: M = 1 S5: K = K + M B2 2 S6: C = K > L S7: IF C THEN GOTO S11 S8: N = N + 1 B3 S9: M = M + 2 S10: GOTO S5 3 4 B4 S11: WRITE(N) S12: END The set of defs reaching the use of N in S8: {S2, S8} def S2 reach S11 along statement path: (S2, S3, S4, S5, S6, S7, S11) S8 reach S11 along statement path: (S8, S9, S10, S5, S6, S7, S11) 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 9 Problem Formulation: Example 1 Can d1 reach point p1? d1 x := exp1 d1 x := exp1 s if p > 0 s1 if p > 0 1 s2 x := x + 1 p1 s3 a = b + c s2 x := x + 1 s4 e = x + 1 p1 s3 a = b + c It depends on what point p1 represents!!! s4 e = x + 1 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 10 Problem Formulation: Example 2 d1 x := exp1 Can d1 and d4 reach point p3? s2 if y > 0 d1 x := exp1 s2 while y > 0 do s3 a := b + 2 s3 a := b + 2 p3 p3 d4 x := exp2 d4 x = exp2 s5 c := a + 1 end while s5 c = a + 1 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 11 Data-Flow Analysis of Structured Programs Structured programs have an useful property: there is a single point of entrance and a single exit point for each statement. We will consider program statements that can be described by the following syntax: Statement id := Expression | Statement ; Statement | if Expression then Statement else Statement | do Statement while Expression Expression id + id | id 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 12 Structured Programs S ::= id := E | S ; S This restricted syntax results in the | if E then S else S forms depicted below for flowgraphs | do S while E E ::= id + id | id S1 S1 If E goto S1 S2 S1 S2 If E goto S1 S1 S2 if E then S1 else S2 do S1 while E 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 13 Data-Flow Values 1. Each program point associates with a data-flow value 2. A data-flow value represents the possible program states that can be observed for that program point. 3. The data-flow value depends on the goal of the analysis. Given a statement 푆, 푛(푆) and 표푢푡(푆) denote the data-flow values before and after 푆, respectively. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 14 Data-Flow Values of Basic Block Assume basic block 푩 consists of statement 풔ퟏ, 풔ퟐ, … , 풔풏 (풔ퟏ is the first statement of 푩 and 풔풏 is the last statement of 푩), the data-flow values immediately before and after 푩 is denoted as: 풊풏 푩 = 풊풏 풔ퟏ 풐풖풕 푩 = 풐풖풕(풔풏) 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 15 Instances of Data-Flow Problems ● Reaching Definitions ● Live-Variable Analysis ● DU Chains and UD Chains ● Available Expressions To solve these problems we must take into consideration the data-flow and the control flow in the program. A common method to solve such problems is to create a set of data- flow equations. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 16 Iterative Method for Dataflow Analysis Establish a set of dataflow relations for each basic block Establish a set dataflow equations between basic blocks Establish an initial solution Iteratively solve the dataflow equations, until a fixed point is reached. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 17 Generate set: gen(S) In general, 푑 ∈ 푔푒푛(푆) if 푑 reaches the end of 푆 independent of whether it reaches the beginning of 푆. We restrict 푔푒푛(푆) contains only the definition in 푆. If 푆 is a basic block, gen(푆) contains all the definitions inside the basic block that are “visible” immediately after the block. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 18 Kill Set: kill(S) 풅 ∈ 푘푙푙 푺 ⇒ 푑 never reaches the end of 푺. This is equivalent to say: reaches end of 풅 푺 풅 ∉ 푘푙푙(푆) d1 a := d2 a := ... dk a : dd a := S dd: a := b + c 푘푙푙(푠) = 퐷푎 − { 푑푑 } Of course the statements d1,d2, …, dk all get killed except dd itself. A basic block’s kill set is simply the union of all the definitions killed by its individual statements! 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 19 Reaching Definitions Problem Statement: Given a program and a program point determine the set of definitions reaching this point in a program. 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 20 Iterative Algorithm for Reaching Definitions dataflow equations The set of definitions reaching the entry of basic block B: 푛(푩) = 표푢푡(푷) 푷 ∈ 푝푟푒푑푒푐푒푠푠표푟(푩) The set of definitions reaching the exit of basic block B: 표푢푡 푩 = 푔푒푛 푩 ∪ { 푛 푩 − kill 퐁 } 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 21 (AhoSethiUllman, pp. 606) Iterative Algorithm for Reaching Definitions Algorithm 1) 풐풖풕(푬푵푻푹풀) = ; 2) for (each basic block 푩 other than 푬푵푻푹풀) 풐풖풕(푩) = ; Need a flag to test if a out 3) while ( changes to any out occur) is changed! The initial value of the flag is true. 4) for ( each 푩 other than 푬푵푻푹풀) { 풊풏 푩 = 푷 ∈풑풓풆풅풆풄풆풔풔풐풓풔 풐풇 푩 풐풖풕(푷) ; 풐풖풕 푩 = 품풆풏 푩 ∪ 풊풏 푩 − 풌풊풍풍 풃 ; } Dataflow Equations – a simple case 푔푒푛 푆 = 푑 Da is the set of all definitions in the S d : a := b + c 푘푙푙 (푆) = 퐷푎 − {푑} program for variable a! S 푔푒푛(푆) = 푔푒푛 (푆2) ∪ (푔푒푛(푆1) − 푘푙푙(푆2)) S 1 S 2 푘푙푙 푆 = 푘푙푙(푆2) ∪ (푘푙푙(푆1) − 푔푒푛(푆2)) 푔푒푛(푆) = 푔푒푛(푆1) ∪ 푔푒푛(푆2) S S1 S2 푘푙푙(푆) = 푘푙푙(푆1) ∩ 푘푙푙(푆2) flow equations for reaching definitions reaching for equations flow - 푔푒푛(푆) = 푔푒푛(푆1) S S1 푘푙푙(푆) = 푘푙푙(푆1) Date 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 23 Dataflow Equations S d : a := b + c 표푢푡(푆) = 푔푒푛(푆) ∪ (푛(푆) − 푘푙푙(푆)) S 푛(푆) = 푛(푆1) S 1 푛(푆2) = 표푢푡(푆1) S2 표푢푡(푆) = 표푢푡(푆2) S S1 S2 푛 푆 = 푛 푆1 = 푛 푆2 표푢푡(푆) = 표푢푡(푆1) ∪ 표푢푡(푆2) flow equations for reaching definitions reaching for equations flow - 푛(푆) = 푛(푆 ) ∪ 표푢푡(푆 ) S S1 1 1 Date 표푢푡(푆) = 표푢푡(푆1) 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 24 Dataflow Analysis: An Example Using RD (reaching def) as an example: d1 : i = 0 Question: in What is the set of reaching loop L . definitions at the exit of the loop L? . d2 : i = i + 1 푛 퐿 = 푑1 ∪ 표푢푡(퐿) out 푔푒푛 (퐿) = {푑2} 푘푙푙 (퐿) = {푑1} 표푢푡(퐿) = 푔푒푛(퐿) ∪ {푛(퐿) − 푘푙푙(퐿)} 푛(퐿) depends on 표푢푡(퐿), and 표푢푡(퐿) depends on 푛(퐿)!! 2012/3/2 \course\cpeg421-08s\Topic4-a.ppt 25 Initialization Solution? out[L] = First iteration d1 : i = 0 표푢푡 퐿 = 푔푒푛 퐿 ∪ ( 푛 (퐿) − 푘푙푙 퐿 ) in = {푑2} ∪ ({푑1} − {푑1}) = {푑2} loop L .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    64 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us