Какие оптимизации включены на уровне -Og в G++?

Официальная документация GCC не дает список оптимизаций, включенных для C++ на -Og уровень, указывающий только, что выбранные параметры не повредят отлаживаемости

Мне нужно знать список оптимизаций, выполнить бинарный поиск, который вызывает ошибку в вызове встроенного конструктора класса шаблона на платформе ARM Cortex-M7 (arm-none-eabi). Я хотел бы отключить только тот, который мешает нашему коду работать правильно. Есть ли где-нибудь список или возможность задать сам GCC?

Кроме того, это помогло бы мне проверить, действительно ли я вижу ошибку в компиляторе, или есть другая проблема, выявленная оптимизацией, примененной в этом месте. В первом случае мне нужно прибить его к минимуму рабочего примера, а это не простой случай. Код с -O0 работает отлично.

1 ответ

Решение

Вы всегда можете увидеть, что позволяет уровень оптимизации, выполнив: g++ -c -Q -Og --help=optimizers | grep enabled, Со страницы руководства:

Если -Q опция появляется в командной строке перед --help= затем описательный текст, отображаемый --help= изменено Вместо описания отображаемых опций указывается, включена ли опция, отключена или установлена ​​на конкретное значение (при условии, что компилятор знает это в точке, где --help= опция используется).

Это выводит на GCC 6.1.1 x86_64:

  -faggressive-loop-optimizations   [enabled]
  -fasynchronous-unwind-tables      [enabled]
  -fauto-inc-dec                    [enabled]
  -fcombine-stack-adjustments       [enabled]
  -fcompare-elim                    [enabled]
  -fcprop-registers                 [enabled]
  -fdce                             [enabled]
  -fdefer-pop                       [enabled]
  -fdelete-null-pointer-checks      [enabled]
  -fdse                             [enabled]
  -fearly-inlining                  [enabled]
  -fforward-propagate               [enabled]
  -ffunction-cse                    [enabled]
  -fgcse-lm                         [enabled]
  -fguess-branch-probability        [enabled]
  -finline                          [enabled]
  -finline-atomics                  [enabled]
  -fipa-profile                     [enabled]
  -fipa-pure-const                  [enabled]
  -fipa-reference                   [enabled]
  -fira-hoist-pressure              [enabled]
  -fira-share-save-slots            [enabled]
  -fira-share-spill-slots           [enabled]
  -fivopts                          [enabled]
  -fjump-tables                     [enabled]
  -flifetime-dse                    [enabled]
  -fmath-errno                      [enabled]
  -fpeephole                        [enabled]
  -fplt                             [enabled]
  -fprefetch-loop-arrays            [enabled]
  -frename-registers                [enabled]
  -freorder-blocks                  [enabled]
  -frtti                            [enabled]
  -fsched-critical-path-heuristic   [enabled]
  -fsched-dep-count-heuristic       [enabled]
  -fsched-group-heuristic           [enabled]
  -fsched-interblock                [enabled]
  -fsched-last-insn-heuristic       [enabled]
  -fsched-rank-heuristic            [enabled]
  -fsched-spec                      [enabled]
  -fsched-spec-insn-heuristic       [enabled]
  -fsched-stalled-insns-dep         [enabled]
  -fschedule-fusion                 [enabled]
  -fshort-enums                     [enabled]
  -fshrink-wrap                     [enabled]
  -fsigned-zeros                    [enabled]
  -fsplit-ivs-in-unroller           [enabled]
  -fsplit-wide-types                [enabled]
  -fssa-backprop                    [enabled]
  -fstdarg-opt                      [enabled]
  -fstrict-volatile-bitfields       [enabled]
  -fno-threadsafe-statics           [enabled]
  -ftrapping-math                   [enabled]
  -ftree-builtin-call-dce           [enabled]
  -ftree-ccp                        [enabled]
  -ftree-ch                         [enabled]
  -ftree-coalesce-vars              [enabled]
  -ftree-copy-prop                  [enabled]
  -ftree-cselim                     [enabled]
  -ftree-dce                        [enabled]
  -ftree-dominator-opts             [enabled]
  -ftree-dse                        [enabled]
  -ftree-forwprop                   [enabled]
  -ftree-fre                        [enabled]
  -ftree-loop-if-convert            [enabled]
  -ftree-loop-im                    [enabled]
  -ftree-loop-ivcanon               [enabled]
  -ftree-loop-optimize              [enabled]
  -ftree-phiprop                    [enabled]
  -ftree-reassoc                    [enabled]
  -ftree-scev-cprop                 [enabled]
  -ftree-sink                       [enabled]
  -ftree-slsr                       [enabled]
  -ftree-ter                        [enabled]
  -fvar-tracking                    [enabled]
  -fvar-tracking-assignments        [enabled]
  -fweb                             [enabled]
Другие вопросы по тегам