WikiDer > Редкое распространение условных констант

Sparse conditional constant propagation

В Информатика, разреженное распространение условных констант оптимизация, часто применяемая в компиляторы после преобразования в статическая форма единого назначения (SSA). Он одновременно удаляет некоторые виды мертвый код и распространяет константы на протяжении всей программы. Более того, он может найти больше постоянных значений и, следовательно, больше возможностей для улучшения, чем отдельно применяя устранение мертвого кода и постоянное распространение в любом порядке или в любом количестве повторений.[1][2]

В алгоритм действует, выполняя абстрактная интерпретация кода в форме SSA. Во время абстрактной интерпретации обычно используется плоский решетка констант для значений и глобальной среды, отображающей переменные SSA в значения в этой решетке. Суть алгоритма заключается в том, как он обрабатывает интерпретацию инструкции по ветке. При обнаружении оценивается состояние ветки. как можно лучше учитывая точность абстрактных значений, связанных с переменными в условии. Может случиться так, что значения совершенно точны (ни вверху, ни внизу), и, следовательно, абстрактное выполнение может решить, в каком направлении разветвляться. Если значения непостоянны или переменная в условии не определена, тогда оба направления ветвления должны быть консервативными.

По завершении абстрактной интерпретации инструкции, которые никогда не были достигнуты, помечаются как мертвый код. Переменные SSA, у которых обнаружено постоянное значение, могут затем быть встроены (распространены) в их точку использования.[пример необходим]

Примечания

  1. ^ Wegman, Mark N. и Zadeck, F. Kenneth. "Постоянное распространение с условными ветвями." Транзакции ACM по языкам и системам программирования, 13 (2), апрель 1991 г., стр. 181-210.
  2. ^ Щелчок, Клиффорд и Купер, Кейт. "Объединение анализов, объединение оптимизаций", Транзакции ACM по языкам и системам программирования, 17 (2), март 1995 г., страницы 181–196.

Рекомендации

  • Купер, Кейт Д. и Торцон, Линда. Разработка компилятора. Морган Кауфманн. 2005 г.