C ++: что именно делает флаг -O, кроме добавления флагов

Я сгенерировал код C ++, который содержит ~ 200 тыс. Строк кода, и я пытаюсь скомпилировать его под CentOS 5.11 с gcc 4.8.5. Когда я указал флаг -O1, компиляция заняла 1 минуту 33 секунды. Я нашел все флаги оптимизации из этого и это страницы, которые включает -O1, и вот они:

  • -fcombine-stack-Adjustments
  • -fcompare-elim
  • -fcprop-registers
  • -fdefer-pop
  • -всегда-распространять
  • -fguess-ветвь-вероятность
  • -fif-преобразование
  • -fif-conversion2
  • -finline-функции-вызываемые-один раз
  • -fipa-профиль
  • -fipa-pure-const
  • -fipa-ссылка
  • -fmerge-константы
  • -fshrink-wrap
  • -fsplit-широкие-типы
  • -ftree-bit-ccp
  • -ftree-ccp
  • -футри-ч
  • -ftree-copy-prop
  • -ftree-copyrename
  • -ftree-dce
  • -ftree-dominator-opts
  • -ftree-dse
  • -free-fre
  • -дерево-раковина
  • -ftree-slsr
  • -ftree-sra
  • -дерево-тер

Но когда я заменил -O1 на эти флаги, время компиляции уменьшилось до 34 секунд. То же самое с -O2 и -O3.

Итак, вот вопрос: что именно делает флаг -O? Если ничего больше, чем добавление других флагов, то время компиляции не должно измениться, но в моем случае разница огромная.


person levonog    schedule 31.07.2018    source источник
comment
Что за флаг добавляется. Эта опция устанавливает конкретный уровень оптимизации, добавляя некоторую работу и передает компилятору   -  person 0___________    schedule 31.07.2018
comment
См. FAQ по gcc.   -  person Marc Glisse    schedule 31.07.2018
comment
Можно как-то смоделировать флаг -O, чтобы понять, почему такая разница во времени?   -  person levonog    schedule 31.07.2018
comment
Опять же, ответ находится в FAQ. gcc.gnu.org/wiki/   -  person Marc Glisse    schedule 31.07.2018
comment
@MarcGlisse Вы должны процитировать это в ответе.   -  person NathanOliver    schedule 31.07.2018
comment
Спасибо, Марк!   -  person levonog    schedule 31.07.2018
comment
@NathanOliver Нет, это должно быть закрыто как дубли (это регулярно задают на этом сайте, есть много кандидатов).   -  person Marc Glisse    schedule 31.07.2018
comment
@MarcGlisse Если у вас есть цель, я буду более чем счастлив ее закрыть.   -  person NathanOliver    schedule 31.07.2018
comment
stackoverflow.com/q/46433381/1918193 - это первое, что приходит, stackoverflow.com/q/6454415/1918193 также будет работать. Возможно, stackoverflow.com/q/13157352/1918193.   -  person Marc Glisse    schedule 31.07.2018