X-Git-Url: https://scm.cri.ensmp.fr/git/pipstransfo.git/blobdiff_plain/3133de1c1fead03bcef7d9c075bbd862afc948ff..d9bb12dc1faeee541c8a41eea4df8cf64aeae9fd:/pipstransfo.tex diff --git a/pipstransfo.tex b/pipstransfo.tex index fffba4d..60b8709 100644 --- a/pipstransfo.tex +++ b/pipstransfo.tex @@ -9,14 +9,73 @@ \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} +\makeindex + \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} @@ -34,7 +93,7 @@ \item inlining % basic bloc transformations \item forward substitution -% dead code removal +% dead code elimination \item constant propagation \item dead code elimination @@ -108,7 +167,7 @@ \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 @@ -153,7 +212,19 @@ A prelude and/or postlude are added to preserve the number of iteration.} \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} @@ -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[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[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[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.} @@ -211,4 +276,6 @@ A prologue and an epilogue are added to copy old variable values to new variable \bibliographystyle{alpha} \bibliography{\jobname} +\printindex + \end{document}