LLVM IR是否具有重复变量名称的范围?

时间:2020-10-30 02:38:11

标签: llvm llvm-ir

我是LLVM的新手,LLVM IR是否可以使用重复的变量名?

例如:


@x = global i32 0


define void @hello() {
  %x = alloca i32, align 4
}

@x变量名是否与%x重复?

1 个答案:

答案 0 :(得分:2)

如果您尝试编写使用这些变量执行某些操作的代码,则会发现答案为

要访问@x,您必须使用Module::GetGlobalVariable方法,该方法显然不会使用%x。同样,要访问%x,您必须迭代Function的{​​{1}},寻找名为“ x”的BasicBlocks。是的,Instruction不是变量,而是指令。

最后,在文本IR级别上,这些值也无法以任何方式混合,因为LLVM中的全局值以%x为前缀,而本地值以@为前缀。

相关问题