LLVM

Module.hのメモ

Moduleとは? LLVM Moduleに関する情報をすべて持つ、IRのトップレベルコンテナ 以下のリストを持つ globals variables functions, moduleが依存するlibraryや他のモジュール シンボルテーブルを持つ その他もろもろを持つ endianessとか、size of a pointer…

練習: bcを読んで書くだけ

llvm-as,disを参考に。エラー処理等々は無視。idchange.cpp #include "llvm/Analysis/Verifier.h" #include "llvm/Assembly/Parser.h" #include "llvm/Assembly/PrintModulePass.h" #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Bitcode/ReaderWr…

練習: 関数一覧

llvm-asを参考に。無駄なincludeは多いはず&エラー処理は無視。funclist.cpp #include "llvm/Analysis/Verifier.h" #include "llvm/Assembly/Parser.h" #include "llvm/Assembly/PrintModulePass.h" #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/…

opt -predsimplify

predsimplify(Predicate Simplifier)を指定したら静的解析ツール的な事ができないか、と思ったので実験。 sample.cpp #include #include int *nonfail_malloc() { int *p = (int *)malloc(sizeof(int)); if(p == 0) { exit(0); } return p; } int foo(int *r…

optコマンド

optコマンドの最適化をひとつずつ試してみたいが、いまひとつ意味がわからないのが多い。とりあえず、標準的なものをひととおりやってくれそうな'-std-compile-opts'を試す。sample.cpp int foo() { int i = 5; int ret; if(i command line llvm-gcc -O0 -S …