- 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!
Johannes Waldmann
2006-02-02