1 CS 201 Compiler Construction Lecture 9 Static Single Assignment Form
Feb 09, 2016
1
CS 201Compiler Construction
Lecture 9Static Single Assignment Form
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
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
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)
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
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
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
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
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
Step 1 Contd..Strict Domination Does Not StrictlyDomination Dominate
10
Y ε DF(X)
Step 1 Contd..Observation: if Y εDF(X) then there may or
may not be a direct edge from X to Y.
11
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
Step 1 Contd..
13
Dominator Tree
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
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