llvm 中的 def-use 链
我通过 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";
}
现在,我想区分导致此数据依赖性的寄存器名称或内存变量。
谢谢
I extract Def_Use chain by following code in LLVM:
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";
}
Now, I want to distinguish the register name or memory variable that lead to this data dependency.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需确定哪条指令使用您的值 F 以及如何使用即可。例如,如果Use是load或store instr,则可以检查指令的操作数来检查F是否用作地址等。
Just determine, which instruction uses your value F and how. E.g. if the Use is load or store instr, then you can check the operand of the instruction to check whether F is used as an address, etc.