Reference These slides, with minor modification and some deletion, come from U. of Delaware – and the web, of course. 4/4/2019 CPEG421-05S/Topic5.

Slides:



Advertisements
Similar presentations
SSA and CPS CS153: Compilers Greg Morrisett. Monadic Form vs CFGs Consider CFG available exp. analysis: statement gen's kill's x:=v 1 p v 2 x:=v 1 p v.
Advertisements

Data-Flow Analysis II CS 671 March 13, CS 671 – Spring Data-Flow Analysis Gather conservative, approximate information about what a program.
8. Static Single Assignment Form Marcus Denker. © Marcus Denker SSA Roadmap  Static Single Assignment Form (SSA)  Converting to SSA Form  Examples.
School of EECS, Peking University “Advanced Compiler Techniques” (Fall 2011) SSA Guo, Yao.
Chapter 9 Code optimization Section 0 overview 1.Position of code optimizer 2.Purpose of code optimizer to get better efficiency –Run faster –Take less.
1 CS 201 Compiler Construction Lecture 3 Data Flow Analysis.
Course Outline Traditional Static Program Analysis –Theory Compiler Optimizations; Control Flow Graphs Data-flow Analysis – today’s class –Classic analyses.
SSA.
Data-Flow Analysis Framework Domain – What kind of solution is the analysis looking for? Ex. Variables have not yet been defined – Algorithm assigns a.
CS412/413 Introduction to Compilers Radu Rugina Lecture 37: DU Chains and SSA Form 29 Apr 02.
Components of representation Control dependencies: sequencing of operations –evaluation of if & then –side-effects of statements occur in right order Data.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Static Single Assignment John Cavazos.
Program Representations. Representing programs Goals.
6/9/2015© Hal Perkins & UW CSEU-1 CSE P 501 – Compilers SSA Hal Perkins Winter 2008.
Recap from last time We were trying to do Common Subexpression Elimination Compute expressions that are available at each program point.
Representing programs Goals. Representing programs Primary goals –analysis is easy and effective just a few cases to handle directly link related things.
Cpeg421-08S/final-review1 Course Review Tom St. John.
1 Intermediate representation Goals: –encode knowledge about the program –facilitate analysis –facilitate retargeting –facilitate optimization scanning.
CS745: SSA© Seth Copen Goldstein & Todd C. Mowry Static Single Assignment.
U NIVERSITY OF M ASSACHUSETTS, A MHERST D EPARTMENT OF C OMPUTER S CIENCE Advanced Compilers CMPSCI 710 Spring 2003 Computing SSA Emery Berger University.
4/25/08Prof. Hilfinger CS164 Lecture 371 Global Optimization Lecture 37 (From notes by R. Bodik & G. Necula)
CMPUT Compiler Design and Optimization1 CMPUT680 - Winter 2006 Topic G: Static Single- Assignment Form José Nelson Amaral
1 CS 201 Compiler Construction Lecture 3 Data Flow Analysis.
Data Flow Analysis Compiler Design October 5, 2004 These slides live on the Web. I obtained them from Jeff Foster and he said that he obtained.
Class canceled next Tuesday. Recap: Components of IR Control dependencies: sequencing of operations –evaluation of if & then –side-effects of statements.
Static Single Assignment Form (SSA)
Recap from last time: live variables x := 5 y := x + 2 x := x + 1 y := x y...
Direction of analysis Although constraints are not directional, flow functions are All flow functions we have seen so far are in the forward direction.
Prof. Bodik CS 164 Lecture 16, Fall Global Optimization Lecture 16.
Precision Going back to constant prop, in what cases would we lose precision?
CSE P501 – Compiler Construction
Advanced Compiler Techniques LIU Xianhua School of EECS, Peking University Static Single Assignment.
Predicated Static Single Assignment (PSSA) Presented by AbdulAziz Al-Shammari
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Static Single Assignment John Cavazos.
1 Data Flow Analysis Data flow analysis is used to collect information about the flow of data values across basic blocks. Dominator analysis collected.
Building SSA Form (A mildly abridged account) For the full story, see the lecture notes for COMP 512 (lecture 8) and.
Dead Code Elimination This lecture presents the algorithm Dead from EaC2e, Chapter 10. That algorithm derives, in turn, from Rob Shillner’s unpublished.
Hy-C A Compiler Retargetable for Single-Chip Heterogeneous Multiprocessors Philip Sweany 8/27/2010.
CS412/413 Introduction to Compilers Radu Rugina Lecture 18: Control Flow Graphs 29 Feb 02.
1 Control Flow Graphs. 2 Optimizations Code transformations to improve program –Mainly: improve execution time –Also: reduce program size Can be done.
Introduction to SSA Data-flow Analysis Revisited – Static Single Assignment (SSA) Form Liberally Borrowed from U. Delaware and Cooper and Torczon Text.
1 CS 201 Compiler Construction Lecture 2 Control Flow Analysis.
Building SSA Form, I 1COMP 512, Rice University Copyright 2011, Keith D. Cooper & Linda Torczon, all rights reserved. Students enrolled in Comp 512 at.
Single Static Assignment Intermediate Representation (or SSA IR) Many examples and pictures taken from Wikipedia.
Definition-Use Chains
Simone Campanoni SSA Simone Campanoni
Data Flow Analysis Suman Jana
Static Single Assignment
Building SSA Form (A mildly abridged account)
Efficiently Computing SSA
Topic 10: Dataflow Analysis
Factored Use-Def Chains and Static Single Assignment Forms
University Of Virginia
Building SSA Form COMP 512 Rice University Houston, Texas Fall 2003
1. Reaching Definitions Definition d of variable v: a statement d that assigns a value to v. Use of variable v: reference to value of v in an expression.
CSC D70: Compiler Optimization Static Single Assignment (SSA)
Static Single Assignment Form (SSA)
Optimizations using SSA
Data Flow Analysis Compiler Design
Topic-4a Dataflow Analysis 2019/2/22 \course\cpeg421-08s\Topic4-a.ppt.
EECS 583 – Class 7 Static Single Assignment Form
Static Single Assignment
Optimizing Compilers CISC 673 Spring 2011 Static Single Assignment II
Copyright 2003, Keith D. Cooper & Linda Torczon, all rights reserved.
Reference These slides, with minor modification and some deletion, come from U. of Delaware – and the web, of course. 4/17/2019 CPEG421-05S/Topic5.
EECS 583 – Class 7 Static Single Assignment Form
CSC D70: Compiler Optimization Static Single Assignment (SSA)
CSE P 501 – Compilers SSA Hal Perkins Autumn /31/2019
Objectives Identify advantages (and disadvantages ?) of optimizing in SSA form Given a CFG in SSA form, perform Global Constant Propagation Dead code elimination.
Objectives Identify advantages (and disadvantages ?) of optimizing in SSA form Given a CFG in SSA form, perform Global Constant Propagation Dead code elimination.
Presentation transcript:

Reference These slides, with minor modification and some deletion, come from U. of Delaware – and the web, of course. 4/4/2019 CPEG421-05S/Topic5

Static Single Assignment SSA: A program is in SSA form iff Each variable is statically defined exactly only once, and Each use of a variable is dominated by that variable’s definition. 4/4/2019 CPEG421-05S/Topic5

Example x  X  1 X  2 X3  (X1, X2) 4 In general, how to transform an arbitrary program into SSA form? Does the definition of X2 dominates its use in the example? X  2 x  X3  (X1, X2) 4 4/4/2019 CPEG421-05S/Topic5

SSA: Motivation Provide a uniform basis of an IR to solve a wide range of classical dataflow problems Encode both dataflow and control flow information A SSA form can be constructed and maintained efficiently Many SSA dataflow analysis algorithms are more efficient (have lower complexity) than their CFG counterparts. 4/4/2019 CPEG421-05S/Topic5

Static Single-Assignment Form Each variable has only one definition in the program text. This single static definition can be in a loop and may be executed many times. Thus, even in a program expressed in SSA, a variable can be dynamically defined many times. 4/4/2019 CPEG421-05S/Topic5

Advantages of SSA Simpler dataflow analysis No need to use use-def/def-use chains, which requires NM space for N uses and M definitions SSA form relates in a useful way with dominance structures. Everybody does it ! 4/4/2019 CPEG421-05S/Topic5

SSA Form – An Example ? SSA-form Each name is defined exactly once Each use refers to exactly one name What’s hard Straight-line code is trivial Splits in the CFG are trivial Joins in the CFG are hard Building SSA Form Insert Ø-functions at birth points Rename all values for uniqueness x  17 - 4 x  a + b x  y - z x  13 z  x * q ? s  w - x [Courtesy: Slide 10-14 are from the book wibesite from Prof. K. Cooper’s website] 4/4/2019 CPEG421-05S/Topic5 *

Birth Points Consider the flow of values in this example: The value x appears everywhere It takes on several values. Here, x can be 13, y-z, or 17-4 Here, it can also be a+b If each value has its own name … Need a way to merge these distinct values Values are “born” at merge points x  a + b x  y - z x  13 z  x * q s  w - x 4/4/2019 CPEG421-05S/Topic5 *

Birth Points Consider the flow of values in this example: New value for x here 17 - 4 or y - z x  a + b x  y - z x  13 New value for x here 13 or (17 - 4 or y - z) z  x * q New value for x here a+b or ((13 or (17-4 or y-z)) s  w - x 4/4/2019 CPEG421-05S/Topic5

Consider the value flow below: Birth Points (cont.) Consider the value flow below: x  17 - 4 x  a + b x  y - z These are all birth points for values All birth points are join points Not all join points are birth points Birth points are value-specific … x  13 z  x * q s  w - x 4/4/2019 CPEG421-05S/Topic5

Review SSA-form Each name is defined exactly once A Ø-function is a special kind of copy that selects one of its parameters. The choice of parameter is governed by the CFG edge along which control reached the current block. Real machines do not implement a Ø-function directly in hardware.(not yet!) SSA-form Each name is defined exactly once Each use refers to exactly one name What’s hard Straight-line code is trivial Splits in the CFG are trivial Joins in the CFG are hard Building SSA Form Insert Ø-functions at birth points Rename all values for uniqueness y1  ... y2  ... y3  Ø(y1,y2) 4/4/2019 CPEG421-05S/Topic5 *

SSA Form in Control-Flow Path Merges Is this code in SSA form? B1 b  M[x] a  0 No, two definitions of a appear in the code (in B1 and B3) B2 if b<4 How can we transform this code into a code in SSA form? B3 a  b We can create two versions of a, one for B1 and another for B3. B4 c  a + b 4/4/2019 CPEG421-05S/Topic5

SSA Form in Control-Flow Path Merges But which version should we use in B4 now? B1 b  M[x] a1  0 We define a fictional function that “knows” which control path was taken to reach the basic block B4: B2 if b<4 B3 a2  b B4 c  a? + b a1 if we arrive at B4 from B2 f ( ) a1, a2 = a2 if we arrive at B4 from B3 4/4/2019 CPEG421-05S/Topic5

SSA Form in Control-Flow Path Merges But, which version should we use in B4 now? B1 b  M[x] a1  0 We define a fictional function that “knows” which control path was taken to reach the basic block B4: B2 if b<4 B3 a2  b B4 a3  (a2,a1) c  a3 + b a1 if we arrive at B4 from B2 f ( ) a2, a1 = a2 if we arrive at B4 from B3 4/4/2019 CPEG421-05S/Topic5

A Loop Example a  0 a1  0 a3  (a1,a2) b2  (b0,b2) c2  (c0,c1) b2  a3+1 c1  c2+b2 a2  b2*2 if a2 < N return b  a+1 c  c+b a  b*2 if a < N return (b0,b2) is not necessary because b0 is never used. But the phase that generates  functions does not know it. Unnecessary functions are eliminated by dead code elimination. Note: only a,c are first used in the loop body before it is redefined. For b, it is redefined right at the Beginning! 4/4/2019 CPEG421-05S/Topic5

The  function How can we implement a  function that “knows” which control path was taken? Answer 1: We don’t!! The  function is used only to connect use to definitions during optimization, but is never implemented. Answer 2: If we must execute the  function, we can implement it by inserting MOVE instructions in all control paths. 4/4/2019 CPEG421-05S/Topic5

Criteria For Inserting  Functions We could insert one  function for each variable at every join point(a point in the CFG with more than one predecessor). But that would be wasteful. What should be our criteria to insert a  function for a variable a at node z of the CFG? Intuitively, we should add a function  if there are two definitions of a that can reach the point z through distinct paths. 4/4/2019 CPEG421-05S/Topic5

Path Convergence Criterion Insert a  function for a variable a at a node z if all the following conditions are true: 1. There is a block x that defines a 2. There is a block y  x that defines a 3. There is a non-empty path Pxz from x to z 4. There is a non-empty path Pyx from y to z 5. Paths Pxz and Pyz don’t have any nodes in common other than z 6. The node z does not appear within both Pxz and Pyz prior to the end, but it might appear in one or the other. The start node contains an implicit definition of every variable. 4/4/2019 CPEG421-05S/Topic5

Iterated Path-Convergence Criterion The  function itself is a definition of a. Therefore the path-convergence criterion is a set of equations that must be satisfied. while there are nodes x, y, z satisfying conditions 1-5 and z does not contain a  function for a do insert a (a, a, …, a) at node z This algorithm is extremely costly, because it requires the examination of every triple of nodes x, y, z and every path leading from x to y. Can we do better? – a topic for more discussion 4/4/2019 CPEG421-05S/Topic5