【问题标题】:What are optimisations enabled by -Og level in G++?G++ 中的 -Og 级别启用了哪些优化?
【发布时间】:2016-12-17 01:33:33
【问题描述】:

官方 GCC 文档没有提供在 -Og 级别为 C++ 启用的优化列表,仅说明所选选项不会损害可调试性。

我需要知道优化列表,请执行二分搜索,这会导致 ARM Cortex-M7 上的内联模板类构造函数调用中出现错误(arm-none-eabi) 平台。我只想禁用阻止我们的代码正常工作的那个。是否有某个地方的列表或询问 GCC 本身的选项?

另外,这将有助于我检查我是否真的在编译器中看到了错误,或者在那个地方应用的优化揭示了其他问题。在前一种情况下,我需要通过最小的工作示例来确定它,这不是简单的情况。带有-O0 的代码可以正常工作。

【问题讨论】:

    标签: g++ g++-5


    【解决方案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]
    

    【讨论】:

    • 在 GCC 5.4.1 中就像一个魅力。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2015-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多