(toppers-users 2956) Re: TINETサンプルプログラムメーク時のエラー対応について

H.Nagano ezu00261 @ nifty.com
2009年 6月 3日 (水) 22:37:11 JST


阿部 司 さんは書きました:
> いずれもアプリケーションプログラム内の警告ですが、
> gcc-2.95.3 では表示されません。
> こちらで、gcc-3.4.3 で確認作業を行いましたところ、同様の警告が表示されました。
> 動作には問題はありませんでした。
>
>   
>> このような開発環境でプログラムを進めても問題ないでしょうか。また、根本的な解
>> 決策があるのでしょうか。
>>     
>
> 今回のように (VP) を付けること以外は思いつきません。
>   
手元に確認できる環境がないため、間違っているかもしれませんが、Warning
メッセージが
「/dereferencing type/-punnedpointer will break strict-aliasing rules」
であるなら、動作に問題がないと考えるのは少々危険です。

gcc3以降は最適化の際、別名規則に厳密にしたがっていると仮定を行います。
この警告は別名規則に違反していることを示しており、最適化の過程で実行結果が
不定になる可能性があることを意味します。

その為、キャストを追加して誤魔化すのではなく、unionなどを利用してきちん
と修正するか、
「-fno-strict-aliasing」を指定して、別名規則を利用した最適化をあきらめて
コンパイルを
行うなどしたほうが良いと思います。

H.Nagano