Llvm 如何获取给定指令的下一条即时指令?
我正在寻找一种正确的方法来获得一条给定指令之后的下一条即时指令 让我们假设我有以下几点:Llvm 如何获取给定指令的下一条即时指令?,llvm,llvm-ir,Llvm,Llvm Ir,我正在寻找一种正确的方法来获得一条给定指令之后的下一条即时指令 让我们假设我有以下几点: %10 = icmp slt i32 %8, %9 br i1 %10, label %11, label %17 我有一个 CmpInst *cmpInst = dyn_cast<CmpInst>(&V); CmpInst*CmpInst=dyn\u cast&V; 对应于%10 如何访问我的CmpInst之后的BranchInst 我假设一个解决方案应该同时考虑这两种情况:
%10 = icmp slt i32 %8, %9
br i1 %10, label %11, label %17
我有一个
CmpInst *cmpInst = dyn_cast<CmpInst>(&V);
CmpInst*CmpInst=dyn\u cast&V;
对应于%10
如何访问我的CmpInst
之后的BranchInst
我假设一个解决方案应该同时考虑这两种情况:当有下一条指令时和当没有指令时,即是
基本块的末尾时,结果是如此简单:
Instruction *instruction = cmpInst->getNextNode();
我同意前面的答案cmpInst->getNextNode()
,它出现在我看过的几个项目中
然而,根据中的另一个答案,getNextNode()
是LLVMAPI内部的内部实现细节。因此,我更喜欢使用cmpInst->getnextnonebuginstruction()
,它可以跳过内部指令,例如调用void@llvm.dbg.declare(…)