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

Technical Note 180519J

Targets:
All

Component:
Compiler

Updated:
5/23/2018 9:00 AM

はじめに

このテクニカルノートでは、コンパイラの最適化の設定の「なし」と「低」の違いについて説明します。

 

解説

「なし」(デバッグサポートに最適): 変数は、そのスコープ全体を通して有効です

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

 

これは、以下のような構文で、

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;
}

 

まとめ

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

 

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

© IAR Systems 1995-2018 - All rights reserved.

We use cookies on this website to provide you with a better experience. You need to accept cookies to continue using this site. Cookies