Writing LLVM Passをまあまあ読んだので、いくつかサンプルプログラムを試してみたくなった。
ドキュメントに書いてあるhello
Passを試してみよう。LLVMのリポジトリの中でrelease/13.x
ブランチで試してみる。
LLVMのrelease/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
がポイントのようだ。まずは動くことが確認できた。