clangでc言語のソースコードからLLVM IRを得る

c言語のソースコードをLLVM IR に変換するときのコマンドのメモ。

c++の場合はclangをclang++に置き換えればおおよそ同じように出来るはず。

C -> LLVM IR

c言語のソースコードから LLVM IR を出力します。

clang -c -S -emit-llvm source.c

source.llに LLVM IR が出力されます。

C -> LLVM ビットコード

c言語のソースコードから LLVM ビットコードを出力します。

# AT&T 形式
clang -c -S source.c
# Intel 形式
clang -c -S -mllvm --x86-asm-syntax=intel source.c

source.bcにビットコードが出力されます。

LLVM ビットコード -> LLVM IR

LLVM ビットコードから LLVM IR を出力します。

llvm-as 1.ll

source.llに LLVM IR が出力されます。

参考

https://stackoverflow.com/questions/10990018/how-to-generate-assembly-code-with-clang-in-intel-syntax