Compiler Optimization
Last updated
Last updated
Many optimizations can be simplified by using SSA form. Consider this counterexample with the presented algorithms.
Algorithm:
Create a map where is a variable. Initialize to undefined.
For each statement, if it is of form:
x = c
set M[x] = c
x = y
set M[x] = M[y]
Replace y with M[y] if defined
v = Op x y
set M[v] = Op(M[x], M[y])
where Op(...) may return undefined
Replace Op x y
with Op(M[x], M[y]) if defined
Otherwise replace x with M[x] if defined and y with M[y] if defined
This only works with SSA. Consider the above snippet as the counterexample.
Algorithm:
For each statement, if it is of form:
x = y
set M[x] = M[y]
v = Op x y
replace with v = Op M[x] M[y]
Again, this only works with SSA.
3. Dead Code Elimination
Algorithm:
Create a map . Initialize M[x]=x