Common subexpression elimination

Van Wikipedia, de gratis encyclopedie

Das Entfernen gemeinsamer Teilausdrücke (englisch common subexpression elimination) beschreibt eine Compiler-Optimierung. Es wird dabei nach Teilausdrücken gesucht, die zuvor bereits berechnet wurden. Wenn solche gefunden werden, wird das vorherige Ergebnis in einer Variable gespeichert und die wiederholte Berechnung durch die Variable ersetzt.[1]

Beispiel[Bearbeiten | Quelltext bearbeiten]

In folgendem Programmabschnitt wird zweimal der Wert von a * b berechnet:

x = a * b + c; y = a * b + d; 

Die CSE transformiert den Abschnitt dann so, dass das erste Ergebnis zwischengespeichert wird:

_tmp = a * b; x = _tmp + c; y = _tmp + d; 

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Steven S. Muchnick: Advanced Compiler Design & Implementation, Morgan Kaufmann Publishers, 1997, ISBN 1-55860-320-4