我通过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中的def-use链,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6807743/

10-11 04:01