【问题标题】:How to get the next immediate instruction for a given instruction?如何获得给定指令的下一条立即指令?
【发布时间】:2017-05-17 20:27:55
【问题描述】:

我正在寻找一种正确的方法来获取遵循给定指令的下一条立即指令。

假设我有以下内容:

%10 = icmp slt i32 %8, %9
br i1 %10, label %11, label %17

我有一个

  CmpInst *cmpInst = dyn_cast<CmpInst>(&V);

对应于%10

如何访问我的CmpInst 后面的BranchInst

我认为解决方案应该考虑两种情况:当有下一条指令和没有下一条指令时,即它是 BasicBlock 的结尾。

【问题讨论】:

    标签: llvm llvm-ir


    【解决方案1】:

    原来就这么简单:

    Instruction *instruction = cmpInst->getNextNode();
    

    【讨论】:

      【解决方案2】:

      我同意之前的答案cmpInst-&gt;getNextNode(),它出现在我见过的几个项目中。

      但是,根据link 中的另一个答案,getNextNode() 是 LLVM API 深处的东西的内部实现细节。因此,我更喜欢使用cmpInst-&gt;getNextNonDebugInstruction(),它可以跳过诸如call void @llvm.dbg.declare(...)之类的内部指令。

      【讨论】:

        猜你喜欢
        • 2016-05-20
        • 2019-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        相关资源
        最近更新 更多