Machine-Independent Optimizations Ⅱ CS308 Compiler Theory1
Foundations of Data-Flow Analysis CS308 Compiler Theory2
Semilattices CS308 Compiler Theory3
Semilattices The partial order for a semilattice (V, ∧ ) for all x and y in V, Greatest low bound of domain elements x and y is an element g such that The meet of x and y, g=x ∧ y, is their only greatest lower bound CS308 Compiler Theory4
Semilattices Lattice Diagrams for 3 definitions The set of data-flow values is the power set of the definitions, which contains 2 n elements if there are n definitions in the program. CS308 Compiler Theory5
Product Lattices for only one definition d, the lattice would have two element: {} and {d} Suppose (A, ∧ A ) and (B, ∧ B ) are lattices, the product lattice is: CS308 Compiler Theory6
Transfer Functions Closed under composition –For any two functions f and g in F, h(x)=g(f(x)) is in F Monotone frameworks –A data-flow framework (D, F, V, ∧ ) is monotone if for all x and y in V and f in F, x<=y implies f(x)<=f(y) Distributive frameworks –f(x ∧ y) = f(x) ∧ f(y) for all x and y in V and f in F. CS308 Compiler Theory7
The Iterative Algorithm for General Frameworks CS308 Compiler Theory8
The Iterative Algorithm for General Frameworks CS308 Compiler Theory9
Constant Propagation The set of data-flow values is a product lattice The lattice for a single variable consists of the following: –All constants appropriate for the type of the variable –The value NAC, which stands for not-a-constant. –The value UNDEF, which stands for undefined. CS308 Compiler Theory10 The semilattice for a typical integer- valued variable The semilattice of data-flow values is simply the product of the semilattices like the Figure.
Constant Propagation CS308 Compiler Theory11
Constant Propagation As long as there exists a path that defines a variable reaching a program point, the variable will not have an UNDEF value. If all the definitions reaching a program point have the same constant value, the variable is considered a constant even though it may not be defined along some program path. CS308 Compiler Theory12
Constant Propagation CS308 Compiler Theory13 The values of x are 10 and UNDEF at the exit of B2 and B3, respectively. UNDEF ∧ 10=10 The value of x is 10 on entry to B4. x in B5 can be replaced with10 What about B1-B3-B4-B5? Choosing 10 as the value of x cannot be worse than allowing x to assume random value.