我正在寻找一种正确的方法来获得遵循给定指令的下一个立即指令。
我们假设我有以下内容:
%10 = icmp slt i32 %8, %9
br i1 %10, label %11, label %17
我有一个
CmpInst *cmpInst = dyn_cast<CmpInst>(&V);
对应%10
。
如何访问BranchInst
后面的CmpInst
?
我认为解决方案应该考虑两种情况:当有下一条指令时,如果没有,即它是BasicBlock
的结尾。
答案 0 :(得分:6)
事实证明这很简单:
Instruction *instruction = cmpInst->getNextNode();
答案 1 :(得分:0)
我同意之前的答案 cmpInst->getNextNode()
,它出现在我看过的几个项目中。
但是,根据 link 中的另一个答案,getNextNode()
是 LLVM API 深处内容的内部实现细节。因此,我更喜欢使用 cmpInst->getNextNonDebugInstruction()
,它可以跳过诸如 call void @llvm.dbg.declare(...)
之类的内在指令。