-deadargelim: Dead Argument Elimination
Description
-deadargelim 其实就是把 never execute(也就是 dead 的意思)的 function arguments 给 remove 掉;进而降低 register usage 并提升 runtime performance。
打个比方,我有一个 function 传入了两个 arguments,但是我的 function body 只是 print 了一个 “hello world”,这时候这两个传入的 arguments 就是 dead 的了,应该被 remove掉。
其实平时我们很难写出这种傻逼的没意义的函数,但是在一些 LLVM 的内置 pass 对程序进行优化的时候,可能会引入这种 dead arguments,这时候 -deadargelim 就是很有意义的了。
Code Example
原始 IR。
define i32 @add_numbers(i32 %a, i32 %b) {
ret i32 0
}
-deadargelim transform 之后的 IR。
define i32 @add_numbers() {
ret i32 0
}