查找LLVM中特定变量的所有用法

ash*_*ash 6 llvm llvm-clang

我是LLVM的新手.

我正在尝试写一个llvm Pass来执行类似于污点分析的事情.在我的努力中,我需要遍历特定预定义变量的Def-use链.例如,C程序的dis汇编代码如下

  @someVar = external global %struct.something 
Run Code Online (Sandbox Code Playgroud)

这是在函数上面找到的,我想在我的函数中找到这个@someVar的所有用法.我该怎么做?我开始写一个函数传递.但是如何获得此特定标识符的Def Use链?

我在LLVM手册http://llvm.org/docs/ProgrammersManual.html#iterate_chains中找到了这个.

但我不确定如何在这种情况下使用它.

PS对不起,如果我的问题模糊或天真.我是新手,我不知道哪些信息是相关的.

kni*_*der 6

我正在粘贴链接中的代码

Function *F = ...;

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)

基本上F是您要查找链的值

  • @ash你给的代码是一条指令.只做这个值*v =*i; 在哪里我是指令 (2认同)