当前位置: 首页 > 工具软件 > llvm-mctoll > 使用案例 >

llvm基本命令

康泽宇
2023-12-01

1.将C语言代码转换成llvm ir:

clang -emit-llvm -S multiply.c -o multiply.ll或 clang -cc1 -emit-llvm testfile.c -o testfile.ll

2.把ll文件的LLVM IR转为bitcode格式

llvm-as test.ll –o test.bc

3.通过以下命令可把bc文件中LLVM bitcode转换为汇编码:

llc test.bc –o test.s或clang -S test.bc -o test.s –fomit-frame-pointer

4.执行以下命令把bitcode文件转换为我们之前创建过的ll文件:
 

llvm-dis test.bc –o test.ll

5.使用以下命令用opt执行转换Pass

opt –passname input.ll –o output.ll
adce:入侵式无用代码消除。 
bb-vectorize:基本块向量化。 
constprop:简单常量传播。 
dce:无用代码消除。 
deadargelim:无用参数消除。 
globaldce:无用全局变量消除。 
globalopt:全局变量优化。 
gvn:全局变量编号。 
inline:函数内联。 
instcombine:冗余指令合并。 
licm:循环常量代码外提。 
loop-unswitch:循环外提。 
loweratomic:原子内建函数lowering。 
lowerinvoke:invode指令lowering,以支持不稳定的代码生成器。 
lowerswitch:switch指令lowering。 
mem2reg:内存访问优化。
memcpyopt:MemCpy优化。 
simplifycfg:简化CFG。 
sink:代码提升。 
tailcallelim:尾调用消除。

6.使用llvm-link命令链接两个LLVM bitcode文件:

 llvm-link test1.bc test2.bc –o output.bc

7.lli工具命令执行LLVM bitcode格式程序

lli output.bc

8.把C语言代码转为bitcode格式

% clang -O3 -emit-llvm hello.c -c -o hello.bc

 

 类似资料: