我通过 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/