Skip to main content

IAR Embedded Workbench for Arm 9.70.x

最適化レベル

このセクションの内容:

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

最適化レベル

説明

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

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

不要なコードの除去

冗長なラベルの除去

冗長な分岐の除去

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

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

生死解析と最適化

不要なコードの除去

冗長なラベルの除去

冗長な分岐の除去

コードホイスト

ピープホール最適化

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

共通部分式除去

コード移動

静的クラスタ

高(バランス)

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

命令スケジューリング

クロスジャンプ

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

ループ展開

関数インライン化

型ベースエイリアス解析

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


注記

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

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