コンパイラ最適化の「なし」と「低」の違い

テクニカル・ノート 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;
}

 

まとめ

コンパイラの最適化設定「なし」は、デバッグ中の変数を常にに有効にしますが、「低」は、変数が必要時のみ有効となり常に有効にはなりません。

 

全ての製品名は、それぞれの所有者の商標または登録商標です

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。