GCC множественные флаги оптимизации - PullRequest
17 голосов
/ 05 апреля 2011

У меня есть какой-то устаревший код, который компилируется с установленными -02 и -03. Из файла man GCC я получаю гарантию, что:

-O3 включает все оптимизации, указанные в -O2, а также включает -finline-functions, -funswitch-loop, -fpredictive-commoning, -fgcse-after-reload и -ftree-vectorize опции.

Итак, на первый взгляд может показаться, что включение обоих этих флагов будет таким же, как и -O3. Тем не менее, это заставило меня задуматься о том, что в этом случае правильное решение, так как -O2, вероятно, является «более безопасным» вариантом. Очевидно, что это простой вопрос - скомпилировать некоторый код со всеми перестановками и посмотреть, что происходит в каждом случае, но мне было интересно, знает ли кто-нибудь, существует ли конкретная политика GCC в отношении указания нескольких уровней оптимизации, и если да, то что в чем причина?

1 Ответ

37 голосов
/ 05 апреля 2011

со страницы руководства :

Если вы используете несколько опций -O, с номерами уровней или без них, последний такой вариант - действующий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...