opt
opt -S -instcombine src.ll -o out.ll
使用instcombine參數優化ll,很像LLVM PASS 優化器
更多的優化可以查看 opt -h
clang
clang.exe -emit-llvm -S main.c -o main.ll
將c代碼編譯爲LLVM IR
llvm-as
llvm-as.exe src.ll -o src.bc
將LLVM IR轉爲bitcode的形式
llc
llc.exe src.bc -o src.asm
將bitcode文件轉爲彙編文件
llvm-dis
llvm-dis.exe src.bc -o out.ll
將bitcode轉爲LLVM IR
llvm-link
#include <stdio.h>
extern int add(int a, int b);
int main()
{
printf("%d\n", add(1, 2));
return 0;
}
clang -emit-llvm -S main.c -o main.ll
clang -emit-llvm -S lib.c -o lib.ll
llvm-as.exe main.ll -o main.bc
llvm-as.exe lib.ll -o lib.bc
llvm-link.exe lib.bc main.bc -o out.bc
類似傳統連接器將多個bitcode文件,變成一個,具體可以看下生成的LLVM IR
lli
lli.exe out.bc
執行(JIT) LLVM bitcode