小编ned*_*eda的帖子

程序依赖图(PDG)

我是 LLVM 的新手,我需要分析程序(控制流和数据流分析)。我在 LLVM 中找不到 PDG 或任务图。我怎样才能做到这一点?

compiler-construction llvm

5
推荐指数
1
解决办法
2669
查看次数

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";
  }
Run Code Online (Sandbox Code Playgroud)

现在,我想区分导致此数据依赖性的寄存器名称或内存变量.

谢谢

compiler-construction llvm

5
推荐指数
1
解决办法
1885
查看次数

通过llvm中的eraseFromParent命令删除循环

*我会删除循环.我使用了以下代码:

cout << "begin to delete loop" << endl;
for (Loop::block_iterator bi = L->block_begin(), bi2; bi != L->block_end(); bi = bi2) {
    bi2 = bi;
    bi2++;
    BasicBlock * BB = *bi;
    for (BasicBlock::iterator ii = BB->begin(), ii2; ii != BB->end(); ii= ii2) {
        ii2 = ii;
        ii2++;
        Instruction *inst = ii;
        inst->eraseFromParent();
    }
    BB->eraseFromParent();
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

在销毁Def后仍然使用:%t1 = icmp sle i32%t0,9 opt:/home/llvm/src/lib/VMCore/Value.cpp:75:virtual llvm :: Value :: ~Value():断言`use_empty()&&"当值被破坏时仍然使用!"'失败.0 opt 0x0848e569堆栈转储:

你有什么建议来解决这个问题?*

llvm

5
推荐指数
2
解决办法
1880
查看次数

标签 统计

llvm ×3

compiler-construction ×2