あけまして

あけましておめでとうございます。
今年は辰年ということなので、dragonですよね。
というわけでdragonegg(http://dragonegg.llvm.org/)を使えるようにしてみました。

dragoneggとは

dragoneggはGCCプラグイン機能を使ってLLVMによる最適化をしようというものらしいです。
現状、Linuxdarwin(Mac)でしか使えなさそう。

今のところそれほど良いことは無さそうな気がするので
私は使えるようにしただけで終わりました。
インストール方法だけメモっときます。Macのみです。

インストール

gccllvmとdragoneggが必要です。全部macportsで入れます。
落とし穴ですが、macportsgccはltoが有効になってないのでportfileをいじってltoを有効にできるようにします。
本当は野良portfileを作ってゴニョゴニョするのがいいのしれませんが、面倒くさいのでportfileを直接いじります。

$ sudo port edit gcc46

でgcc4.6のportfileを開きます。そんで、

variant lto description {enable the Link Time Optimization} {
    configure.args-append   --enable-lto
}

という記述を追加します。これでmacportsでltoを指定できるようになります。
そしてgcc46をインストール

$ sudo port install gcc46 +lto

うまくインストールできることを願って下さい。次にllvmとdragonegg

$ sudo port install llvm-3.0
$ sudo port install dragonegg-3.0

同時にやってしまってもいいかもしれません。

うまくいけば、dragonegg-LLVMバージョン-xxxとかいうものが使えるようになるはず。
g++なら

$ dragonegg-3.0-g++ -std=c++0x main.cpp -o main

というかんじで。実際はg++に-fplugin=...とかいうオプションつけてるだけなはずなので、g++のコンパイルオプションとかも使えます。


どの程度最適化されるんでしょうね・・・



そうそう、年賀状代わりにdragoneggのロゴ置いときます。

ヌーの人とは関係ないですよ・・