11.3. Переключатели оптимизации

На верх  Назад  Вперёд

Здесь описаны различные переключатели оптимизаций и их действие на генерируемый код, материал сгруппирован по переключателям.

-On: где n = 1..3: эти переключатели активируют оптимизатор. Более высокие уровни автоматически включают в себя более низкие.

Уровень 1 (-O1) активирует визуальный оптимизатор (общая последовательность инструкций заменяется более быстрыми эквивалентами).

Уровень 2 (-O2) включает анализатор потока данных ассемблера, который позволяет очистить общие подвыражения процедур для удаления ненужных перезагрузок регистров значениями, которые уже содержатся в регистрах.

Уровень 3 (-O3) то же, что уровень 2, плюс некоторые трудоёмкие операции.

-OG: заставляет генератор кода (и оптимизатор, если он включен) работать быстрее, но с наибольшим количество «умного» кода, последовательности инструкций (такие как "subl $4,%esp") вместо медленных, инструкции меньшего размера по возможности ("enter $4"). Установлен по умолчанию.

-Og: противоположность переключателя –OG. Эти переключателя являются взаимоисключающими: включение одного будет выключать другой.

-Or: этот параметр заставляет генератор кода проверять, какие переменные используются больше, и сохранять их в регистры.

-Opn: где n = 1..3: указывает целевому процессору не активировать оптимизатор. Он влияет только на генератор кода, если активирован оптимизатор.

Во время генерации кода процесса, эта установка используется для определения, будет ли переход по таблице или последовательность условных переходов в операторе case.

Визуальный оптимизатор принимает ряд решений на основе этого параметра, например, он переводит некоторые сложные инструкции, такие как
 
movzbl (mem), %eax|
 
в комбинацию простых инструкций
 
xorl %eax, %eax
movb (mem), %al
 
для Pentium.

-Ou: включает неопределённые оптимизации. Однако вы не всегда можете его использовать. В предыдущем разделе описано, как и когда они могут быть использованы, а когда не могут.