llvm BasicBlock 内部的变量对其他人可见吗?
Is variable inside of llvm BasicBlock visible for others?
假设我们有一个名为hello.world
的Function,它包含两个BasicBlockbb.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 label %bb.2
结尾,答案是肯定的。
严格来说,给定 BB 中定义的变量对于所有 BB 都是可见的,这些 BB 由 给定的 BB 支配。
假设我们有一个名为hello.world
的Function,它包含两个BasicBlockbb.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 label %bb.2
结尾,答案是肯定的。
严格来说,给定 BB 中定义的变量对于所有 BB 都是可见的,这些 BB 由 给定的 BB 支配。