コンパイラ最適化の「なし」と「低」の違い
テクニカル・ノート 180519J
アーキテクチャ:
All
コンポーネント:
compiler
更新日:
2018/09/04 5:26
はじめに
このテクニカルノートでは、コンパイラの最適化の設定の「なし」と「低」の違いについて説明します。
解説
「なし」(デバッグサポートに最適): 変数は、そのスコープ全体を通して有効です
「低」:「無し」と同じですが、変数は必要時のみ有効となり、スコープ全体を通して有効とは限りません
これは、以下のような構文で、
int func(void)
{
int a, b, c;
a = 3;
c = a;
b = 4;
c = c + b;
return c;
}
「なし」では変数は常に有効ですが、「低」の場合、下記のように
書き換えられる場合があります。
int func(void)
{
int x, c;
x = 3; | デバッガ上 x は aに見えるが、
c = x; | この位置から、bは見えない
--------------
x = 4; | ここからは a は見えなくなる。
c = c + x; |
return c;
}
まとめ
コンパイラの最適化設定「なし」は、デバッグ中の変数を常にに有効にしますが、「低」は、変数が必要時のみ有効となり常に有効にはなりません。
全ての製品名は、それぞれの所有者の商標または登録商標です