Download presentation
Presentation is loading. Please wait.
1
1 CS 201 Compiler Construction Lecture 9 Static Single Assignment Form
2
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) superior to def-use chains Superior representation for Control Flow Control Dependence Graph superior to control flow graph 2
3
SSA-Form A 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
4
Example K 1 L 1 Repeat if (P) then if (Q) then L 2 else L 3 K K+1 else K K+2 Until (T) 4 K1 1 L1 1 Repeat K2 ϕ (K1,K5) L2 ϕ (L1,L6) if (P) then if (Q) then L3 2 else L4 3 L5 ϕ (L3,L4) K3 K2+1 else K4 K2+2 K5 ϕ (K3,K4) L6 ϕ (L2,L5) Until (T)
5
SSA-Form Observations: 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(n 2 ) –SSA-form: 2 x #defs or #uses – O(n) 5
6
Constructing SSA-Form Step 1: Introduce functions at certain points in the program -- v ϕ (v,v,….) where of operands equals number of control predecessors and i th operand corresponds to i th predecessor. 6
7
Contd.. Step 2: Each variable v is given several new names v 1, v 2, …. Such that every name appears exactly once on the left hand side of an assignment. 7
8
Step 1: Introducing ϕ -functions Node 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
9
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
10
Step 1 Contd.. Strict Domination Does Not Strictly Domination Dominate 10 Y ε DF(X)
11
Step 1 Contd.. Observation: if Y εDF(X) then there may or may not be a direct edge from X to Y. 11
12
Step 1 Contd.. 12 Computing Dominance Frontier: for each Y εsucc(X) do if idom(Y) != X then DF(X) = DF(X) U {Y} for each Z εChidren(X) in the dominator tree do for each Y εDF(Z) do if idom(Y) != X then DF(X) = DF(X) U {Y} Compute bottom-up order According to dominator tree
13
Step 1 Contd.. 13 Dominator Tree
14
Step 1 Contd.. Dominance Frontier of a Set of Nodes S DF(S) = DF(X) Iterated Dominance Frontier DF + (S): DF 1 = DF(S) DF i+ 1 = DF(S U DF i ) S – set of nodes which assign to variable V DF + (S) – set of nodes including those where ϕ -functions must be placed. 14
15
Step 2: Rename the Variables Step 2: For each variable v rename its left hand side occurrences as v 1, v 2, …. Perform reaching definition analysis to identify names to use in the right hand side occurrences of v. 15
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.