どうも! VC6.0 が未だに現役のエンジニアです。
VC2005 もそれなりに使ってるんだけど、ライブラリの開発とかコンパイラの制作は VC6 で
進めております( ´д`)
さて、今日はVC6 上の Release モード時のみで発生したバグのロジックを紹介します。
VC2005 では最適化時でも発生せず、今のところ VC6 上のみの確認です。
|
-
- ロジック的には上記みたいな感じです。
- 上の const int& val が、トレースなどしてみると -1 になっちゃてるのですね。
- しかし、実は上のソースでは問題は起きません。
- 基本的には、当たり前のようにうまくいくのです( 実際に当たり前ですが。。 )
- うまくいかなかったのが、コンパイラ制作の際、1個所で起きただけで、今まで多数のWindowsアプリ
- を作りましたが、今回が初めてなのです。
ちなみに以下のようなコードにしても、値がおかしかったので最適化のバグだと思っております。
|
VC2005 の最適化では正しく挙動したのと、VC6でも最適化無しならば、特定の個所も期待通りに動きました( ´д`)
とりあえずスタックぶっ壊したからとかじゃなくて、VC6のバグと信じていますw
どなたか、VC6 上で 最適化時の一時変数の寿命のバグ を知っている方がいましたら、ぜひ教えてください!
0 コメント:
コメントを投稿