La recherche des sous-expressions communes est une phase
complexe [2], pour laquelle il nous est apparu intéressant
d'ordonner les expressions élémentaire de sorte que les plus "courtes"
soient examinées en premier lieu (cela permet d'avoir une vision plus
"globale"). Il faut bien entendu respecter les dépendances de flot
(réutilisation des variables).
Sur l'exemple de la figure 1, l'expression t est tout d'abord atomisée, puis la recherche des sous expressions communes et le déplacement de code sont effectués. Pour chaque variable temporaire ( pour i de 1 à 5) on essaie de réutiliser les résultats déjà obtenus. Or, plusieurs solutions sont équivalentes (en terme de réutilisation) à un instant donné, mais ne le sont plus si l'on examine les utilisations "futures". Il est donc intéressant de "ranger" les expressions élémentaires de sorte qu'une vision "à long terme" soit favorisée (en s'attachant à respecter les dépendances de flot).
Table 1: Ordonner pour améliorer la recherche des sous-expressions.