next up previous
Next: Le problème global Up: 2.2.3 Les différentes étapes Previous: Ordonner les instructions

Recherche des sous-expressions communes et déplacement de code


Au cours de cette étape, nous essayons de placer "au plus tôt" les calculs, et de réutiliser au maximum les résultats partiels déjà obtenus. Rappelons que la structure étudiée est une mise sous forme d'une liste d'instructions (boucle, condition, affectation). L'absence d'anti-dépendances permet d'évaluer la profondeur d'une expression (position jusqu'à laquelle l'expression peut-être remontée en respectant les dépendances de flot) uniquement à partir des indices de boucles. Si plusieurs solutions se présentent, elles sont toutes évaluées et la meilleure vis à vis du critère choisi ("diminuer le nombre d'opérations pour le niveau le plus profond") sera conservée. Rappelons que cette "heuristique" ne peut garantir que la solution "finale" sera optimale car nous nous contentons d'atteindre des optimaux "locaux" (à l'instant t de l'algorithme).



Julien Zory
Thu Mar 12 17:35:23 MET 1998