日刊mosh - clangビルド対応

Clangでもコンパイルできるようになりました(trunk/2.8で確認)。
微妙に問題だったのは、

  • inline asmを ; で終端できない
  • 整数レジスタをdoubleに制約できない

という非常に地味なポイント。というか、gccのinline asmが;で終端できるのを知らなかった。。

パフォーマンスはイマイチ。やっぱりリンク時最適化が必要に思える。そろそろgcc4.6.0も出てgccもWHOPRが使えるようになるので、そこで比較したいところ。

Clangが落ちるテストケース

↑のコミットログにもあるけど、

int
main(int ac,char **av){
    double d;
    asm volatile("movd %%rax, %%xmm0\n" : "=a" (d) : :);
}

のように、実装されていない(不正な)制約を使うと今のClangは落ちるようだ。