Top Banner
1 CS 201 Compiler Construction Lecture 9 Static Single Assignment Form
15

CS 201 Compiler Construction

Feb 09, 2016

Download

Documents

Nonnie

CS 201 Compiler Construction. Lecture 9 Static Single Assignment Form. Program Representations. Why develop Advanced Program Representations? To develop faster algorithms To develop more powerful algorithms Superior representation for Data Flow Static Single Assignment Form (SSA Form) - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS 201 Compiler Construction

1

CS 201Compiler Construction

Lecture 9Static Single Assignment Form

Page 2: CS 201 Compiler Construction

Program RepresentationsWhy develop Advanced Program Representations?

-To develop faster algorithms-To develop more powerful algorithms

Superior representation for Data FlowStatic Single Assignment Form (SSA Form)superior to def-use chains

Superior representation for Control FlowControl Dependence Graphsuperior to control flow graph

2

Page 3: CS 201 Compiler Construction

SSA-FormA program in SSA-form satisfies the following two properties:

1. A use of a variable is reached by exactly one definition of that variable.

1. The program is augmented with ϕ–nodes that distinguish values of variables transmitted on distinct incoming control flow edges.

3

Page 4: CS 201 Compiler Construction

Example

K 1L 1Repeat

if (P) thenif (Q) then

L2else L3KK+1

else KK+2Until (T)

4

K11L11Repeat

K2ϕ(K1,K5)L2ϕ(L1,L6)if (P) then

if (Q) thenL32

else L43L5ϕ(L3,L4)K3K2+1

else K4K2+2K5ϕ(K3,K4)L6ϕ(L2,L5)

Until (T)

Page 5: CS 201 Compiler Construction

SSA-FormObservations:

1. SSA-form has def-use information textually embedded in it. Given a use, we know where the definition comes from.

1. SSA-form is more compact representation of def-use chains.

– Def-use chains: #defs x #uses – O(n2)– SSA-form: 2 x #defs or #uses – O(n)

5

Page 6: CS 201 Compiler Construction

Constructing SSA-FormStep 1: Introduce functions at certain

points in the program -- v ϕ (v,v,….) where of operands equals number of control predecessors and ith operand corresponds to ith predecessor.

6

Page 7: CS 201 Compiler Construction

Contd..Step 2: Each variable v is given several new names

v1, v2, …. Such that every name appears exactly once on the left hand side of an assignment.

7

Page 8: CS 201 Compiler Construction

Step 1: Introducing ϕ-functionsNode Z needs a ϕ-function for variable V if

Z is the first node common to two non-null paths that originate at two different nodes each containing: an assignment to V; or a ϕ-function for V.

8

Page 9: CS 201 Compiler Construction

Step 1 Contd..Definition: X strictly dominates Y ≅ X

dominates Y & X != Y.Definition: Immediate dominator of a node is its

closest strict dominator. Notation: X = idom(Y).

Definition: Dominance Frontier DF(X) = {Y: there exists P εpred(Y) such that X

dominates P & X does not strictly dominate Y} ϕ-functions are placed at nodes in DF nodes of

nodes with assignments.

9

Page 10: CS 201 Compiler Construction

Step 1 Contd..Strict Domination Does Not StrictlyDomination Dominate

10

Y ε DF(X)

Page 11: CS 201 Compiler Construction

Step 1 Contd..Observation: if Y εDF(X) then there may or

may not be a direct edge from X to Y.

11

Page 12: CS 201 Compiler Construction

Step 1 Contd..

12

Computing Dominance Frontier:for each Y εsucc(X) do

if idom(Y) != X thenDF(X) = DF(X) U {Y}

for each Z εChidren(X) in the dominator tree dofor each Y εDF(Z) doif idom(Y) != X thenDF(X) = DF(X) U {Y}

Compute bottom-up order According to dominator tree

Page 13: CS 201 Compiler Construction

Step 1 Contd..

13

Dominator Tree

Page 14: CS 201 Compiler Construction

Step 1 Contd..Dominance Frontier of a Set of Nodes S DF(S) = DF(X)

Iterated Dominance Frontier DF+(S):DF1 = DF(S)DFi+1 = DF(S U DFi)

S – set of nodes which assign to variable VDF+(S) – set of nodes including those where ϕ-

functions must be placed.14

Page 15: CS 201 Compiler Construction

Step 2: Rename the VariablesStep 2: For each variable v rename its left

hand side occurrences as v1, v2, …. Perform reaching definition analysis to identify names to use in the right hand side occurrences of v.

15