0

SWL 是一个映射,其中我将存储地址作为键,将常量作为其对应值。然而,当我检查这个存储在加载中使用时,我尝试用常量替换存储指令的使用。这样做不会取代指令。运行此遍后字节码没有变化。

std::map<Value*,Value*> SWL;
for (User::op_iterator OI = I.op_begin(); OI != I.op_end();  ++OI)
{
  Value *v = *OI;
   std::map<Value*,Value*> :: iterator re = SWL.find(v);

   if(re != SWL.end() && isa<LoadInst>(&I))
  {
    I.replaceAllUsesWith(re->second);
    bRet = true;
  }
}
4

1 回答 1

0

我正在执行 opt -load sample.dylib -passname sample.bc >/dev/null 而不是将其作为 >change.bc 定向到其他文件。当我这样做并执行 change.bc 的 llvm-dis 时,我可以看到更改。

于 2017-10-26T16:18:17.897 回答