-O
このセクションの内容:
構文
-O[n|l|m|h|hs|hz]
パラメータ
| なし*(デバッグサポートに最適) |
| 低* |
| 中 |
| 高(バランス) |
| 高(速度優先) |
| 高(サイズ優先) |
*レベル「低」で実行されたすべての最適化は、「なし」でも実行されます。ちがいは、レベル「なし」では、すべての非静的変数がそのスコープ全体で有効なことです。
説明
このオプションは、コンパイラでコードを最適する際に使用される最適化レベルを設定する場合に使用します。最適化オプションを指定していない場合は、デフォルトで最適化レベル低が使用されます。-Oのみを使用し、パラメータを指定しない場合は、高(バランス)の最適化レベルが使用されます。
最適化レベルを低くすると、デバッガでプログラムのフローを追跡するのが比較的簡単になります。逆に、最適化レベルを高くすると、追跡が比較的難しくなります。
高い最適化レベルで、速度やサイズ(-Ohsや-Ohz)を選ぶとき、コンパイラは、リクエストされた最適化の目標を示したAEABI 属性を出力します。この情報は、DLIBライブラリ関数のより小さくて速い変数を選択するために、リンカによって使用されます。
モジュールで参照している関数が、
-Ohsでコンパイルされていて、DLIB ライブラリに早い変形型が存在する場合、それが使用されます。すべてのモジュールで参照している関数が、
-Ohzでコンパイルされていて、DLIB ライブラリは、小さい変形型が存在する場合、それが使用されます。
例えば、Cortex-M0に-Ohzを使用すると、整数除算にはより小さいAEABIライブラリルーチンを使用することになります。
関連項目
注意
[プロジェクト]>[オプション]>[C/C++コンパイラ]>[最適化]