2016-08-10 9 views
0

公式のGCCのドキュメントでは、選択されたオプションがデバッグ性に悪影響を及ぼさないことだけを示す、-OgレベルのC++で有効になっている最適化のリストは提供されていません。G ++で-Ogレベルで有効になる最適化は何ですか?

私は特定の一つがのARMのCortex-M7(アームなし-EABI)プラットフォーム上でインラインテンプレートクラスのコンストラクタの呼び出しにバグを引き起こすバイナリサーチを実行しない、最適化のリストを知っている必要があります。私はコードが正しく動作するのを妨げるものだけを無効にしたいと思います。 GCC自身に聞くためのどこかのリストやオプションがありますか?

プラスこれは私が実際にコンパイラのバグを確認するのに役立ちますか、その場所に適用された最適化によって明らかになった他の問題があります。前者の場合、最小限の作業例でそれを釘付けにする必要がありますが、それは簡単なケースではありません。 -O0のコードは正常に動作します。

答えて

2

g++ -c -Q -Og --help=optimizers | grep enabledを実行すると、最適化レベルで何が有効になっているかをいつでも確認できます。 manページから:-Qオプションが--help= オプションの前に、コマンドラインに表示された場合

、その後、--help=で表示される説明のテキストが変更されます。 表示されたオプションを説明する代わりに、 というオプションが有効か無効か、または特定の値に設定されているかどうかの指示が表示されます( オプションを使用する時点でコンパイラがこれを認識していると仮定します)。

これはGCC 6.1.1 x86_64版に出力:GCC 5.4.1で魔法のように

-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] 
+0

作品。どうもありがとうございました。 –

関連する問題