aboutsummaryrefslogtreecommitdiff
path: root/cibic.tex
diff options
context:
space:
mode:
Diffstat (limited to 'cibic.tex')
-rw-r--r--cibic.tex23
1 files changed, 23 insertions, 0 deletions
diff --git a/cibic.tex b/cibic.tex
index d8b1aa3..fdcd47f 100644
--- a/cibic.tex
+++ b/cibic.tex
@@ -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