Clang/LLVMのツールチェーンでControl Flow Graphを出してみる。
rutilicus.hatenablog.com
これの続き。
Stack OverflowでClang/LLVMのツールチェーンを使えばControl Flow Graphが出せるということなのでやってみた。ソースコードは承前の記事内のものと同一。
$ echo {bef,aft} | xargs -n 1 | xargs -I@ clang -fno-discard-value-names -emit-llvm -S @.c -o @.ll $ for name in {bef,aft}; do opt -analyze --dot-cfg "$name".ll; dot -Tpng .a.dot -o "$name".png; done
出るのがこんな感じのpng画像。
- bef.c
- aft.c
-fno-discard-value-namesオプションを付けることで変数名は残っていますが、それでもLLVM IRからオリジナルのソースコードの位置を出すのは骨が折れそうですね。Clangのオプション次第でLLVM IR内にコメントとして残せるのでしょうか。