本文将罗列几条关于LLVM IR生成和转换的几条指令,并没有技术含量可言,只是让刚接触LLVM IR的同学,有一个检索和参考作用。文中min.c作为输入。

min.c
int min(int a , int b) {
if (a <b )
return a;
return b:
}

1、从源码生成.bc

clang min.c -emit-llvm -c -o min.bc

2、从源码生成.ll

clang min.c -emit-llvm -S -c -o min.ll

3、.ll转换为.bc

llvm-as min.ll -o min.bc

4、.bc转换为.ll

llvm-dis min.bc -o min.ll

5、从.bc中抽取元素构建成新的.bc

llvm-extract -func=min min.bc -o min-fn.bc

llvm-extract可以从.bc中抽取函数、全局变数等,然后构建成为一个新的.bc文件。

此处的例子是从中抽取出函数名为min的函数,由于该文件中只有这一个函数,所以

抽取之后所形成的文件与原文件并无区别。

参考文献:《Getting Started with LLVM Core Libraries》

推荐阅读:

相关文章