clang のライブラリの方で遊んでみた

clang のコンパイラではなく、ライブラリの方で遊んでみた。使用した clang(+LLVM) のバージョンは Subversion レポジトリより取得した r127064 。ちょっと古いが気にしない。

clangのライブラリの方のドキュメントが見つけられなかったので、主にclang tutorialを参考にした。しかしながら、clang tutorialが書かれたのは2008年であり、現在の clang ではコンパイルエラーになるコードもある。

今回作成したのは、main関数が引数を取るか取らないかを出力するプログラムである (clang::FunctionDecl::isMain関数を使えば、ある関数がmain関数であるかどうか判定できるので楽できる)。clang::CompilerInstanceの使い方がこれでいいのか、かなり自信がない。以下ソースコード

コンパイルは以下のようにする*1。 ただし、$(LLVMDIR)はLLVMがインストールされているディレクトリを表す。

$ clang -std=c++0x -fno-rtti -Wall -I$(LLVMDIR)/include \
  -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -o maintype maintype.cpp $(LLVMDIR)/lib/lib*.a

*1:どのライブラリをリンクすればいいのか、調べるのがめんどかったので、全部リンクすればいいよねっていう(ry