llvm - 获取类型 br 指令的标签字段中引用的基本 block 的第一条指令

标签 llvm llvm-ir control-flow control-flow-graph llvm-3.0

我正在尝试编写一个通行证来检查代码的控制流。给定 br 指令,我需要访问标签字段中引用的基本块。

例如,对于代码:

 for(i = 0; i < count; i++){
    sum = add(sum, array[i]);
  }

我得到 IR 代表
br i1 %cmp, label %for.body, label %for.end

现在,当我在传递中遇到此指令时,我需要确切地知道这些标签指向的位置。谁能告诉我我该怎么做?

最佳答案

调用 ->getOperand(1)->getOperand(2)该指令的方法。这将分别为您提供第 1 个和第 2 个 BB。见 http://llvm.org/doxygen/classllvm_1_1User.html#abe1de1520a21f77ac57cc210bf0fb0b4

关于llvm - 获取类型 br 指令的标签字段中引用的基本 block 的第一条指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622622/

相关文章:

iphone - Xcode 3.2.1 GCC CLANG 和 LLVM 揭秘

c++ - 由于获取-释放内存顺序而错过了优化机会或所需的行为?

c++ - 我怎样才能做 llvm 链接时间优化

llvm - LLVM IR 的静态分析工具

if-statement - 为什么一个变量与多个值的不相等检查总是返回 true?

LLVM 无法获得所需的分析

linker - LLVM 使用外部函数

c++ - LLVM:如何找出使用的是哪种类型?

haskell - 函数式编程是否表现出控制流?

for-loop - for 循环 Arduino/C