我是LLVM的新手,LLVM IR是否可以使用重复的变量名?
例如:
@x = global i32 0
define void @hello() {
%x = alloca i32, align 4
}
@x
变量名是否与%x
重复?
答案 0 :(得分:2)
如果您尝试编写使用这些变量执行某些操作的代码,则会发现答案为否。
要访问@x
,您必须使用Module::GetGlobalVariable
方法,该方法显然不会使用%x
。同样,要访问%x
,您必须迭代Function
的{{1}},寻找名为“ x”的BasicBlocks
。是的,Instruction
不是变量,而是指令。
最后,在文本IR级别上,这些值也无法以任何方式混合,因为LLVM中的全局值以%x
为前缀,而本地值以@
为前缀。