【发布时间】:2015-12-08 23:16:41
【问题描述】:
假设我有:
foo(int a, int b){
bar(a)
}
我将如何检查 bar 中的参数 a 是否与 llvm IR(*.ll 文件)中 foo 中的参数 a 相同我得到以下信息:
test.ll:
18 ; Function Attrs: nounwind uwtable
19 define i32 @foo(i32 %a, i32 %b) #0 {
20 entry:
21 %a.addr = alloca i32, align 4
22 %b.addr = alloca i32, align 4
23 %f = alloca i32, align 4
24 store i32 %a, i32* %a.addr, align 4
25 store i32 %b, i32* %b.addr, align 4
26 %0 = load i32, i32* %a.addr, align 4
27 %call = call i32 @baz(i32 %0)
28 store i32 %call, i32* %f, align 4
29 %1 = load i32, i32* %f, align 4
30 ret i32 %1
31 }
32
【问题讨论】:
-
“相同”是什么意思?
-
本质上,我想知道
bar(a)中的a是foo的一个参数。我试图破译bar的参数是否直接从父函数调用传入,即foo。 -
是 'a' 参数还是 '有效 const' 参数或只是 '尚未重新分配'参数?
-
我不太清楚你的意思,但
a只是一个参数 -
foo(int a) { a=2; b(a); }- 应该报告什么?
标签: c++ llvm compiler-optimization llvm-ir llvm-c++-api