先日のboehmgcの問題がXcodeのclangのせいじゃないかというギワク
boehmgcがMoutain Lionで落ちる件だけど、そういえばLion(Xcode 4.3?)では起きてないんだよね。修正内容自体もなんか納得しがたいものだし。ということで、boehmgcのupstreamにパッチ送る前に、いちおうMacPortsのclangでも検証しておこう。Xcodeじゃないclang-3.1でも起きるなら、FreeBSDとかでも再現するだろうし、意味がある修正になるでしょ。
検証の手順
MacPortsにtestが指示されてるのでそれを利用する。
% port cat boehmgc | cat -n | sed -n 43,46p 43 44 test.run yes 45 test.target check 46
`port test'でmake checkが走るようになっている。詳しくはMacPorts Guideの"5.3.9. Test Phase Keywords"あたりを参照のこと。
実際の手順はこんな感じ。
% svn co ... # svnからboehmgcのportを取ってきてパッチ前のバージョンに。sources.confに追加。 % port file boehmgc # 今回用意したファイルになっていることを確認 % port info boehmgc # パッチ前の7.2cになっていることを確認 boehmgc @7.2c (devel) : % sudo port clean boehmgc # とりあえずclean % sudo port -v test boehmgc configure.compiler=macports-clang-3.0 # コンパイラを指定してtest : /usr/bin/make check-TESTS Switched to incremental mode Emulating dirty bits with mprotect/signals : Starting iteration 10 The test appears to have succeeded. PASS: test_cpp =================== All 11 tests passed =================== %
cleanしてtestをそれぞれのコンパイラについて実施する。
検証の結果
さて結果です。
10.8 Mountain Lion
バージョン | バージョン詳細 | 結果 | |
---|---|---|---|
Xcode 4.4.1 | Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) | 7 of 11 tests failed | |
clang-3.0 | clang version 3.0 (tags/RELEASE_30/final) | All 11 tests passed | |
clang-3.1(*1) | clang version 3.1 (branches/release_31) | All 11 tests passed |
(*1)clangは後述のパッチを適用済み
10.7.4 Lion
バージョン | バージョン詳細 | 結果 |
---|---|---|
Xcode 4.4 | Apple clang version 4.0 (tags/Apple/clang-421.0.57) (based on LLVM 3.1svn) | 7 of 11 tests failed |
Xcode 4.4.1 | Apple clang version 4.0 (tags/Apple/clang-421.0.60) (based on LLVM 3.1svn) | 7 of 11 tests failed |
clang-3.0 | clang version 3.0 (tags/RELEASE_30/final) | All 11 tests passed |
clang-3.1 | clang version 3.1 (branches/release_31) | All 11 tests passed |
あらら、Lionもだめじゃん。Xcode-4.4だとアウトか。
clang-3.1は大丈夫みたいだから、Apple版だけの問題かもしんないね。どうしよう…