Алгоритмы, структуры данных
5c8b6e8c

хорошо известная проблема глобального анализа


Распространение констант – хорошо известная проблема глобального анализа потока данных. Цель распространения констант состоит в обнаружении величин, которые являются постоянными при любом возможном пути выполнения программы, и в распространении этих величин так далеко по тексту программы, как только это возможно. Выражения, чьи операнды являются константами, могут быть вычислены на этапе компиляции. Поэтому использование алгоритмов распространения констант позволяет компилятору выдавать более компактный и быстрый код.
Хотя в общем случае проблема распространения констант является неразрешимой, существует множество проявлений этой проблемы, для которых существуют эффективные алгоритмы.
Технологии распространения констант позволяют решить следующие задачи:
  • выражения, вычисляемые на этапе компиляции не нужно вычислять в процессе выполнения программы

  • код, который никогда не выполняется, может быть удален. Недостижимый код может появляться в тех случаях, когда значение предиката в условном выражении неизменно и известно на этапе компиляции.

  • увеличение эффективности встраивания процедур.
    Распространение констант совместно со встраиванием процедур (когда многие параметры процедур являются константами) позволяет избежать разрастания кода, которое часто является результатом встраивания процедур в места из вызовов


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