\begin{slide}{Common Subexpression Elimination --- CSE}

\begin{itemize}\itemsep 0pt
\item
Idee: gleichwertige (Teil)ausdrücke (auch aus verschiedenen Ausdrücken)
nur einmal auswerten.
\item
Implementierung: Sharing von Knoten im Syntaxbaum
\item
Vorsicht: Ausdrücke müssen wirklich völlig gleichwertig sein,
einschließlich aller Nebenwirkungen.
\item
Auch Pointer/Arrays gesondert behandeln.
\end{itemize}
Beispiele: $f(x) + f(x)$; $f(x) + g(y)$ und $g(y) + f(x)$;
$a * (b * c)$ und $(a * b) * c$; \verb| .. a [4] .. a [4] .. |

Aufgabe: untersuchen, wie weit \verb|gcc|  CSE durchführt.
Bis zum Seminar Testprogramme ausdenken!

\end{slide}
