首页 > 解决方案 > LLVM IR 是否具有重复变量名的范围?

问题描述

我是 LLVM 新手,LLVM IR 是否有重复变量名的范围?

例如:


@x = global i32 0


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

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

标签: llvmllvm-ir

解决方案


如果您尝试编写对这些变量执行某些操作的代码,您会发现答案是否定的。

要访问@x,您必须使用Module::GetGlobalVariable方法,这显然不会拿起%x. 同样,要访问%x,您必须迭代Functions BasicBlocks,寻找一个Instruction名为“x”。是的,%x事物不是变量,而是指令。

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


推荐阅读