LoginSignup
3
6

More than 5 years have passed since last update.

なぜあなたのKaleidoscopeはコンパイルできないのか?

Posted at

A. あなた使っているLLVMに適合したKaleidoscopeJIT.hでありません。利用しているLLVMのバージョンのリリースブランチからKaleidoscopeJIT.hを得ましょう。

この記事は「LLVM 6.0 で作るフロントエンドの道しるべ」の兄弟記事です。
以降は詳細という名の蛇足です。

Kaleidoscope

LLVMを用いてプログラミング言語を実装する公式チュートリアルに、Kaleidoscopeがあります。LLVMに入門した多くの人が参照したのではないでしょうか。そして、写経とはいかないも、サンプルコードをコンパイルするくらいは試したことと思います。

筆者の場合、4章のJITでサンプルコードがコンパイルできず、早速つまづきました。この原因は、適切な 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 です。

おわび

煽りタイトルで、さらに内容薄になってしまったことは反省しています。

参考文献

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6