こんにちは、なかむら(う)です。

In message "[ruby-dev:22293] Re: mswin32 optimize"
    on Dec.15,2003 17:57:12, <tietew-ml-ruby-dev / tietew.net> wrote:
| > 状況から考えて、TietewさんはVC7で試していらっしゃると思います
| > が、VC6では -Og 自体にバグがあって、今回のパッチだけではうま
| > くいきませんので、OPTFLAGS は外部から指定してください ^^;
| 
| ありゃ。じゃあ,VC7.1 なら -O2 でも旨くいった,ということで。
|                    ~~
| # VC7.0 と VC7.1 では C++ 部分が大幅に変わってるんです。
| # 純粋な C の部分はあまり変更無いと思うけど…

昔々VC7.0(VC.NET)で試したときも、-O2 でだいたいうまくいってい
たようなので、この件に関してはVC7.0もVC7.1(VC.NET2003)でも同
様だろうと思います。
だめなのはVC6ですね。

それはそれとして、私の手元のVC7.1で試してみたところ、unit test
の方は、最初にいきなり lib/tmpdir.rb:20 でSEGVして通りませんで
した。-Og- なら通ったので、他にもまだなんかあると思われます...


| > | +!if !defined(OS) || !defined(RT)
| > |  OS = mswin32
| > |  RT = msvcrt
| > | +!endif
| > 
| > ここで !if !defined(OS) || !defined(RT) でくくってるのはなぜ
| > でしょう?
| 
| configure.bat で作られた Makefile で, OS と RT を変更したかった
| ためです。具体的には -MDd (デバッグ版ランタイムとリンクする) を
| 使ったビルドが欲しかったので,msvcrtd-ruby18.dll と名前を変えた
| かったのです。!defined(OS) だけだと環境変数 OS (=Window_NT) が有
| 効になってしまうので RT とペアでチェックしてます。

環境変数OSについてはまったく気づいてませんでした。うひ。
「OS」はそのうち別のに変えますが、それはそれとして要望は理解
できますので、取り込みます。


| > | -LDFLAGS = -link -incremental:no -pdb:none
| > | +LDFLAGS = -link -incremental:no -debug -opt:ref -opt:icf -map
| > 
| > えーと、これも必要ですか?
| 
| これも VC7 依存かも。-pdb:none でリンカがそんなオプション無い,
| と警告吐いたので,あとデバッグシンボルが欲しかったのです。

-pdb:none はVC7依存ですが、VC6で*.pdbを吐かれてもいいような気
がするので取りこみます。
-debugについても、-Ziがリンク時に有効になってないことが判明し
たので、そのまま取り込みます。
-opt:ref -opt:icfも同様。-mapはパス。


| これも Makefile で定義したのが有効になるようになって欲しいかも。
| (そうすると Makefile.sub 書き換える必要がないし)

了解。


先のメールで一個聞き忘れましたが、

| +NORETURN(static void stack_extend _((rb_thread_t,int)));

これは必要ですか?


それでは。
-- 
U.Nakamura <usa / osb.att.ne.jp>