A. あなた使っているLLVMに適合したKaleidoscopeJIT.h
でありません。利用しているLLVMのバージョンのリリースブランチからKaleidoscopeJIT.h
を得ましょう。
この記事は「LLVM 6.0 で作るフロントエンドの道しるべ」の兄弟記事です。
以降は詳細という名の蛇足です。
Kaleidoscope
LLVMを用いてプログラミング言語を実装する公式チュートリアルに、Kaleidoscopeがあります。LLVMに入門した多くの人が参照したのではないでしょうか。そして、写経とはいかないも、サンプルコードをコンパイルするくらいは試したことと思います。
筆者の場合、[4章のJIT](4. Kaleidoscope: Adding JIT and Optimizer Support)でサンプルコードがコンパイルできず、早速つまづきました。この原因は、適切な KaleidoscopeJIT.h
を使っていないことにあります。
KaleidoscopeJIT.h のありか
3章まではサンプルコードそのままでコンパイルできても、4章からは KaleidoscopeJIT.h
を用意しろと言われます。よくチュートリアルを読むと llvm-src/examples/Kaleidoscope/include/KaleidoscopeJIT.h
にあるらしいです。
KaleidoscopeJIT.h
で検索すると、だいたい https://github.com/llvm-mirror/llvm/blob/master/examples/Kaleidoscope/include/KaleidoscopeJIT.h に行き当たります。 LLVMのミラーリポジトリだし、パスあってるし、これじゃんと思って使うと、コンパイルエラーになります。コンパイルエラーになるのは、 master
ブランチ向けに修正されているためです。
使うべき KaleidoscopeJIT.h
は、使っているLLVMのバージョンのブランチに、あるいはきちんとリリースされたソースに同梱されている KaleidoscopeJIT.h
です。正しいブランチからヘッダを参照しましょう。 LLVM 6.0を使っている場合には、以下から参照できるものが正しい KaleidoscopeJIT.h
です。
おわび
煽りタイトルで、さらに内容薄になってしまったことは反省しています。