add template to describe transformer
[pipstransfo.git] / pipstransfo.tex
index fffba4d..60b8709 100644 (file)
@@ -9,14 +9,73 @@
 \usepackage{hyperref}
 \usepackage{xspace}
 
 \usepackage{hyperref}
 \usepackage{xspace}
 
-\newcommand\PIPS{PIPS\xspace}
+\usepackage{makeidx}
+
+\usepackage{etoolbox}
+
+\newcommand{\PIPS}{PIPS\xspace}
+
+% Patch the sectioning commands to provide a hook to be used later
+\preto{\chapter}{\def\leveltitle{\chaptertitle}}
+\preto{\section}{\def\leveltitle{\sectiontitle}}
+\preto{\subsection}{\def\leveltitle{\subsectiontitle}}
+\preto{\subsubsection}{\def\leveltitle{\subsubsectiontitle}}
+
+\makeatletter
+% \@sect is called with normal sectioning commands
+% Argument #8 to \@sect is the title
+% Thus \section{Title} will do \gdef\sectiontitle{Title}
+\pretocmd{\@sect}
+  {\expandafter\gdef\leveltitle{#8}}
+  {}{}
+% \@ssect is called with *-sectioning commands
+% Argument #5 to \@ssect is the title
+\pretocmd{\@ssect}
+  {\expandafter\gdef\leveltitle{#5}}
+  {}{}
+% \@chapter is called by \chapter (without *)
+% Argument #2 to \@chapter is the title
+\pretocmd{\@chapter}
+  {\expandafter\gdef\leveltitle{#2}}
+  {}{}
+% \@schapter is called with \chapter*
+% Argument #1 to \@schapter is the title
+\pretocmd{\@schapter}
+  {\expandafter\gdef\leveltitle{#1}}
+  {}{}
+\makeatother
+
+\newcommand{\PIPSPass}{Pass Name in \PIPS : }
+\newcommand{\PIPSExamples}{Validation folder in \PIPS : }
+\newcommand{\BookRef}{Reference: }
+\newcommand{\NameCommun}[1]{\subsection{#1}\index{\sectiontitle!\subsectiontitle}}
+\newcommand{\NamePipsPass}[1]{\xspace#1\index{\sectiontitle!\subsectiontitle!#1}\xspace}
+
 
 \title{\PIPS~--- List of code transformations}
 
 
 \title{\PIPS~--- List of code transformations}
 
+\makeindex
+
 \begin{document}
 
 \chapter{Summary}
 
 \begin{document}
 
 \chapter{Summary}
 
+\section{Section Name}
+
+\NameCommun{Commun Transformation Name}
+Description...
+
+\PIPSPass \NamePipsPass{toto}, \NamePipsPass{toto2}, \NamePipsPass{toto3}
+
+\PIPSExamples toto
+
+\BookRef \cite[p. xxx]{darte_scheduling_2000},
+\cite[p. xxx]{wolfe_high_1996},
+\cite[p. xxx]{zima_supercompilers_1990},
+\cite[p. xxx]{dowd_high_1998},
+\cite[p. xxx]{aho_compilers_2007},
+\cite[p. xxx]{allen_optimizing_2001}
+
 \section{SGuelton}
 
 \begin{itemize}
 \section{SGuelton}
 
 \begin{itemize}
@@ -34,7 +93,7 @@
 \item inlining
 % basic bloc transformations
 \item forward substitution
 \item inlining
 % basic bloc transformations
 \item forward substitution
-% dead code removal
+% dead code elimination
 \item constant propagation
 \item dead code elimination
 
 \item constant propagation
 \item dead code elimination
 
 \item statement reordering % not supported by Pips
 \item expression optimization
 \item partial redundancy elimination
 \item statement reordering % not supported by Pips
 \item expression optimization
 \item partial redundancy elimination
-% dead code removal
+% dead code elimination
 \item unreachable code
 \item semantically uneachable code
 \item if and loop elimination
 \item unreachable code
 \item semantically uneachable code
 \item if and loop elimination
@@ -153,7 +212,19 @@ A prelude and/or postlude are added to preserve the number of iteration.}
 
 \section{Base blocs transformations}
 
 
 \section{Base blocs transformations}
 
-\section{Dead code removal}
+\section{Dead code elimination}
+
+\begin{description}
+
+\item[dead code elimination]{is the process of pruning from a function all the statements whose results are never used.}
+
+\item[common subexpression elimination]{is the process of replacing similar expressions by a variable that holds the result of their evaluation.}
+
+\item[goto elimination]{is the process of replacing \texttt{goto} instructions by a hierarchical control flow graph.}
+
+\end{description}
+
+\section{Other (unclassified)}
 
 \begin{description}
 
 
 \begin{description}
 
@@ -174,17 +245,11 @@ Inlining a function \texttt{foo} in its caller \texttt{bar} consists in the subs
 
 \item[instruction selection]{is the process of mapping parts of the IR to machine instructions.}
 
 
 \item[instruction selection]{is the process of mapping parts of the IR to machine instructions.}
 
-\item[goto elimination]{is the process of replacing \texttt{goto} instructions by a hierarchical control flow graph.}
-
 \item[outlining]{is the process of extracting part of a function body into a new function and replacing it in the initial function by a function call.}
 
 \item[outlining]{is the process of extracting part of a function body into a new function and replacing it in the initial function by a function call.}
 
-\item[common subexpression elimination]{is the process of replacing similar expressions by a variable that holds the result of their evaluation.}
-
 \item[statement isolation]{is the process of replacing all variables referenced in a statement by newly declared variables.
 A prologue and an epilogue are added to copy old variable values to new variable, back and forth.}
 
 \item[statement isolation]{is the process of replacing all variables referenced in a statement by newly declared variables.
 A prologue and an epilogue are added to copy old variable values to new variable, back and forth.}
 
-\item[dead code elimination]{is the process of pruning from a function all the statements whose results are never used.}
-
 \item[array linearization]{is the process of converting multidimensional array into unidimensional arrays, possibly with a conversion from array to pointer.}
 
 \item[iteration clamping]{is a loop transformation that extends the loop range but guards the loop body with the former range.}
 \item[array linearization]{is the process of converting multidimensional array into unidimensional arrays, possibly with a conversion from array to pointer.}
 
 \item[iteration clamping]{is a loop transformation that extends the loop range but guards the loop body with the former range.}
@@ -211,4 +276,6 @@ A prologue and an epilogue are added to copy old variable values to new variable
 \bibliographystyle{alpha}
 \bibliography{\jobname}
 
 \bibliographystyle{alpha}
 \bibliography{\jobname}
 
+\printindex
+
 \end{document}
 \end{document}