Common Subexpression Elimination -- CSE

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 2005-01-28