こんにちは、なかむら(う)です。 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>