llvm BasicBlock中的变量是否对其他人可见?

llvm BasicBlock中的变量是否对其他人可见?,llvm,llvm-ir,Llvm,Llvm Ir,假设我们有一个名为hello.world的函数,它包含两个BasicBlock bb.1和bb.2,例如: i32 @hello.world(i32 %x) bb.1: %a = i32 %x bb.2: %b = i32 %a ret i32 %b bb.1中的变量%a对bb.2中的%b可见吗?您的代码无效,因为bb.1没有以终止符指令结尾。以br标签%bb.2结尾,答案是肯定的 严格地说,给定BB中定义的变量可以从由给定BB支配的所有BB中看到。作为后续变量是不够的,定义寄存器

假设我们有一个名为hello.world的函数,它包含两个BasicBlock bb.1和bb.2,例如:

i32 @hello.world(i32 %x)
bb.1:
  %a = i32 %x
bb.2:
  %b = i32 %a
  ret i32 %b

bb.1中的变量%a对bb.2中的%b可见吗?

您的代码无效,因为bb.1没有以终止符指令结尾。以br标签%bb.2结尾,答案是肯定的


严格地说,给定BB中定义的变量可以从由给定BB支配的所有BB中看到。

作为后续变量是不够的,定义寄存器的块还必须支配使用它的块。