Skip to main content

IAR Embedded Workbench for Arm 9.70.x

最適化レベル

このセクションの内容:

コンパイラでは、さまざまな最適化のレベルをサポートしています。 以下の表は、各レベルで一般的に実行される最適化の一覧です。

最適化レベル

説明

なし(デバッグサポートに最適)

変数は、そのスコープ全体を通して有効です。

不要なコードの除去

冗長なラベルの除去

冗長な分岐の除去

低

上記と同じですが、変数は必要時のみ有効となり、スコープ全体を通して有効とは限りません。

中

上記のほかに以下があります。

生死解析と最適化

不要なコードの除去

冗長なラベルの除去

冗長な分岐の除去

コードホイスト

ピープホール最適化

一部のレジスタ内容の解析と最適化

共通部分式除去

コード移動

静的クラスタ

高(バランス)

上記のほかに以下があります。

命令スケジューリング

クロスジャンプ

詳細なレジスタ内容の解析と最適化

ループ展開

関数インライン化

型ベースエイリアス解析

表91 コンパイラ最適化レベル 


注記

一部の最適化は、個別に有効化/無効化が可能です。詳細については、変換の微調整を参照してください。

最適化レベルを高くするとコンパイル時間が長くなることがあり、また、生成されたコードとソースコードの関係がわかりにくくなるため、デバッグも困難になります。たとえば、最適化レベルの低、中、高の場合、変数がスコープ全体を通して有効とは限らないため、変数の格納に使用されたプロセッサレジスタは、最後に使用された状態のままで再使用される可能性があります。このため、C-SPYのウォッチウィンドウには、スコープ全体を通した変数の値が表示できない、または間違った値を表示することがあります。コードのデバッグが困難な場合は、最適化レベルを下げてください。