Idee: gleichwertige (Teil)ausdrücke (auch aus verschiedenen Ausdrücken) nur einmal auswerten.
Implementierung: Sharing von Knoten im Syntaxbaum
Vorsicht: Ausdrücke müssen wirklich völlig gleichwertig sein, einschließlich aller Nebenwirkungen.
Auch Pointer/Arrays gesondert behandeln.
Beispiele:
f (x) + f (x);
f (x) + g(y) und
g(y) + f (x);
a*(b*c) und
(a*b)*c; .. a [4] .. a [4] ..
Aufgabe: untersuchen, wie weit gcc
CSE durchführt.
Bis zum Seminar Testprogramme ausdenken!