LLVM学习笔记0:安装
算是重拾LLVM,这次重头记录学习历程。
安装
安装比较简单,apt-get
直接安装即可:
1 2
| sudo apt-get install clang sudo apt-get install llvm
|
测试安装
使用LLVM CookBook里的一个小例子验证安装是否成功。
demo code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| define i32 @test1(i32 %A) { %B = add i32 %A, 0 ret i32 %B }
define internal i32 @test(i32 %X, i32 %dead) { ret i32 %X }
define i32 @caller() { %A = call i32 @test(i32 123, i32 456) ret i32 %A }
|
- 将上述LLVM代码输入到
testfile.ll
- 运行
opt
工具中指令合并的pass:opt -S -instcombine testfile.ll -o output1.ll
- 运行死代码消除pass:
opt -S -deadargelim testfile.ll -o output2.ll
我们容易通过查看上面运行pass后的输出代码确认pass已生效:
output1.ll
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ; ModuleID = 'tesetfile.ll'
define i32 @test1(i32 %A) { ret i32 %A ; eliminated adding 0 }
define internal i32 @test(i32 %X, i32 %dead) { return i32 %X }
define i32 @caller() { %A = call i32 @test(i32 123, i32 456) ret i32 %A }
|
output2.ll
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ; ModuleID = 'testfile.ll'
define i32 @test1(i32 %A) { %B = add i32 %A, 0 ret i32 %B }
define internal i32 @test(i32 %X) { ; eliminated dead arg ret i32 %X }
define i32 @caller() { %A = call i32 @test(i32 123) ; elminated dead arg ret i32 %A }
|