Копирование распространения - Copy propagation

В теория компилятора, копирование распространения представляет собой процесс замены вхождений целей прямого присвоения их значениями.[1] Прямое задание - это инструкция вида х = у, который просто присваивает значение у к Икс.

Из следующего кода:

у = хз = 3 + у

Копирование даст:

г = 3 + х

Для распространения копий часто используются достижение определений, цепочки use-def и def-use цепи при вычислении того, какие вхождения цели можно безопасно заменить. Я упал открытые вверх виды использования цели можно безопасно изменить, операцию присваивания можно исключить.

Распространение копирования - это полезная оптимизация «очистки», которая часто используется после того, как другие оптимизации уже были выполнены. Некоторые оптимизации, например устранение общих подвыражений[1]требовать это распространение копий запускается впоследствии, чтобы добиться повышения эффективности.

Смотрите также

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

  1. ^ а б Ахо, Альфред V .; Lam, Monica S .; Сетхи, Рави; Ульман, Джеффри Д. Компиляторы, принципы, методы и инструменты Второе издание. ISBN  0-321-48681-1.

дальнейшее чтение

Мучник, Стивен С. Расширенный дизайн и реализация компилятора. Морган Кауфманн. 1997 г.