Множественные флаги оптимизации GCC

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

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

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

Ответ 1

На странице man:

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