LLVM IR是否具有重复变量名的作用域?

LLVM IR是否具有重复变量名的作用域?,llvm,llvm-ir,Llvm,Llvm Ir,我是LLVM新手,LLVM IR是否有重复变量名的作用域 例如: @x = global i32 0 define void @hello() { %x = alloca i32, align 4 } @x变量名是否与%x重复?如果您尝试编写一个代码来处理这些变量,您会发现答案是否 要访问@x,您必须使用模块::GetGlobalVariable方法,该方法显然无法获取%x。类似地,要访问%x,您必须迭代函数s基本块,查找名为“x”的指令。是的,%x不是一个变量,而是一条指令 最后,

我是LLVM新手,LLVM IR是否有重复变量名的作用域

例如:


@x = global i32 0


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

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

如果您尝试编写一个代码来处理这些变量,您会发现答案是

要访问
@x
,您必须使用
模块::GetGlobalVariable
方法,该方法显然无法获取
%x
。类似地,要访问
%x
,您必须迭代
函数
s
基本块
,查找名为“x”的
指令。是的,
%x
不是一个变量,而是一条指令

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