LLVM には C++ と C API が用意されています. 最近は FTL http://blog.llvm.org/2014/07/ftl-webkits-llvm-based-jit.html のおかげで C API の整備が大分進み, 十分使える感じになっています.
C API のほうがコンパイル時間も短くて済み, また言語バインディングを書くとなども, リンケージや ABI 問題に悩まされなくなります. これからは C API で書いておきたいですね.
LLVM C API のサンプル
ひとつの大きな問題はドキュメントやサンプルコードがオフィシャルには無い事です.
幸い FTL(webkit) には RefucedFTL という謎(?)の LLVM C API を使ったサンプルがあります.
これをみれば大体わかりますね!
昨今の LLVM では MCJIT が推奨のようです. ExecutioEngine には MCJIT を使い, LLVMLinkInMCJIT()
を忘れずに呼び出しておきましょう.