Разработка компиляторов

       

Чистка циклов вниз



увеличить изображение

Данное преобразование также легко реализуется в представлении с использованием def-use chains и в каком-то смысле является симметричным предыдущему.

Теперь вершина изнутри сильно связного подграфа заменяется на несколько копий, каждая из которых является непосредственным преемником выходных вершин подграфа. Выходной вершиной называется такая вершина, среди непосредственных преемников которой есть вершина, не принадлежащая данному подграфу.

Легко видеть, что преобразование корректно только в том случае, когда ни одна вершина подграфа не достижима из тех вершин, которые используют результаты оператора, которым помечена выносимая вершина.

Данное преобразование также повторно по отношению к самому себе.

Далее мы перейдем к описанию преобразований, для которых недостаточно рассмотренных выше способов представления программы.



Содержание раздела