FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

LLVMのPassManagerを試す

f:id:msyksphinz:20210922000636p:plain

Writing LLVM Passをまあまあ読んだので、いくつかサンプルプログラムを試してみたくなった。 ドキュメントに書いてあるhello Passを試してみよう。LLVMリポジトリの中でrelease/13.xブランチで試してみる。

llvm.org

LLVMrelease/13.xブランチをビルドすると、ビルドディレクトリに./lib/LLVMHello.soが生成されている。これを使って試してみるわけか。 まずはその通りにコマンドを打ってみる。

./bin/opt  -load ./lib/LLVMHello.so -hello < ./sample/hello.bc > /dev/null
./bin/opt: unknown pass name 'hello'
zsh: exit 1     ./bin/opt -load ./lib/LLVMHello.so -hello < ./sample/hello.bc > /dev/null

あれ?上手く動かない。

色々と調査して、どうやらLLVM13(というかもっと古いバージョンのLLVMから)新しいPass Managerになっているようで、いくつかオプションを調整しなければならないようだ。

./bin/opt -enable-new-pm=0 -f -load ./lib/LLVMHello.so -hello < ./sample/hello.bc > /dev/null
Hello: main

一応動作した。この-enable-new-pm=0-fがポイントのようだ。まずは動くことが確認できた。