[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.3 GCC の最適化と合わせた使い方

gcov を使って自分のコードの最適化を行なう予定なら、 まず最初に自分のプログラムをコンパイルするときに GNU CC の 特別なオプションを二つ指定しなければならない。 それを除けば、他の GNU CC のどのオプションでも使うことができる。 しかし、プログラムのあらゆる行が実行されることを確認するには、 最適化オプションは同時には指定しないほうが良い。 機種によっては、最適化により、幾つかの簡単なコード行が、他の行と 組み合わされることにより、削除されてしまう可能性があるからである。 例えば、

 
if (a != b)
  c = 1;
else
  c = 0;

というコードは、機種によっては一個の命令にコンパイルされることがある。 この場合、gcov が各行毎の実行回数を別々に計算する術がない。 何故なら、各行に対応する独立したコードがないからである。 このため、このプログラムを最適化つきでコンパイルすると gcov の 出力は以下のようになる。

 
      100  if (a != b)
      100    c = 1;
      100  else
      100    c = 0;

これは、このコードブロックが、最適化により組み合わされ、100回実行 されたことを示す。 ある意味ではこの結果は正しい。この4行全体を表す命令が一個しかないから である。 だが、この出力では、結果が 0 になった回数と結果が 1 になった回数が 分からない。


This document was generated using texi2html 1.78.