llvm 中的 def-use 链

发布于 2024-11-26 11:15:56 字数 347 浏览 1 评论 0原文

我通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤独难免 2024-12-03 11:15:56

只需确定哪条指令使用您的值 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文