compiler-construction - 在 llvm 中定义使用链

标签 compiler-construction llvm

我通过 LLVM 中的以下代码提取 Def_Use 链:

for (Value::use_iterator i = F->use_begin(), e = F->use_end(); i != e; ++i)
  if (Instruction *Inst = dyn_cast<Instruction>(*i)) {
    errs() << "F is used in instruction:\n";
    errs() << *Inst << "\n";
  }

现在,我想区分导致这种数据依赖的寄存器名称或内存变量。

谢谢

最佳答案

只需确定哪个指令使用您的值 F 以及如何使用。例如。如果Use是load或者store instr,那么可以检查指令的操作数来检查F是否用作地址等。

关于compiler-construction - 在 llvm 中定义使用链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6807743/

相关文章:

haskell - 使用构造函数的一部分在 Haskell 数据中派生实例

python-3.x - 通过 pip 安装 librosa 失败

c++ - 链接 clang/llvm 3.0 库

c - 全局和静态变量的优化

node.js - 构建 Node.js 出现错误 : Node. js 配置错误:找不到可接受的 C 编译器

xcode - clang : error: '-I-' not supported, 请改用 -iquote (Xcode 4)

c - LLVM:为什么在构建调用时会出现段错误?

c - LLVM IR 中函数的参数编号与源代码不同

c++ - 如何使用 g++ 创建静态库?

c - 嵌入式系统的 Lisp 编译器设计?