Skip to main content

IAR Embedded Workbench for Arm 10.10.x

最適化レベル

このセクションの内容:

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

Optimization

None (best debug support)

Low

Medium

High (balanced)

To override

Dead code elimination

Redundant label elimination

Redundant branch elimination

Variables only live for as long as they are needed

Code hoisting

Common sub-expression elimination

‑‑no_cse

Live-dead analysis and optimization

Redundant computation elimination

Static clustering

‑‑no_clustering

Value-based optimizations

Value propagation and simplification

Code motion

‑‑no_code_motion

Peephole optimization

Cross jumping

‑‑no_cross_jump

Function inlining

‑‑no_inline

Instruction scheduling

‑‑no_scheduling

Loop unrolling

‑‑no_unroll

Type-based alias analysis

‑‑no_tbaa

注記

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

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