diff options
author | Teddy <[email protected]> | 2014-05-18 10:33:26 +0800 |
---|---|---|
committer | Teddy <[email protected]> | 2014-05-18 10:33:26 +0800 |
commit | d84e0dac79287b481a833cce3353c0d59fa7b9a1 (patch) | |
tree | cdeca5e7d64d4fcb828851a9480b924f7ee4f74d | |
parent | 4d74edbe7e76d17984eacb5d3df4d26d857d45b1 (diff) |
report: workflow
-rw-r--r-- | cibic.tex | 23 | ||||
-rw-r--r-- | ssa.c | 4 |
2 files changed, 25 insertions, 2 deletions
@@ -584,6 +584,29 @@ a_0[8] = t12 to guide the final translation. Of course, the code above does produce correct result compiled by CIBIC. \end{enumerate} + +\begin{figure}[H] + \centering + \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{} + \begin{minted}{c} +calc_dominance_frontier(); +/* build SSA */ +insert_phi(vars); +renaming_vars(oprs); +/* optimization on SSA */ +const_propagation(); +subexp_elimination(); +const_propagation(); +strength_reduction(); +deadcode_elimination(); +/* out of SSA */ +mark_insts(); +build_intervals(); +register_alloc(); + \end{minted} + \caption{Workflow of CIBIC IR} +\end{figure} + \subsection{Single Static Assignment Form} CIBIC makes good use of SSA (Single Static Assignment) form. SSA form is a property of an IR, which says that each variable is assigned \textbf{exactly @@ -1414,7 +1414,7 @@ int intersect(int b1, int b2) { return b1; } -void calc_dominant_frontier(void) { +void calc_dominance_frontier(void) { int i; int ch = 1; ocnt = 0; @@ -2706,7 +2706,7 @@ void ssa_func(CType_t func) { } cpset_destroy(avs); cpset_destroy(vs); - calc_dominant_frontier(); + calc_dominance_frontier(); /* build SSA */ insert_phi(vars); renaming_vars(oprs); |