replacealluseswith不起作用

时间:2014-03-04 02:38:15

标签: c++ llvm llvm-ir

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;
  }
}

1 个答案:

答案 0 :(得分:0)

我正在进行opt -load sample.dylib -passname sample.bc&gt; / dev / null,而不是将其作为&gt; change.bc指向其他文件。当我这样做并做一个llvm-dis of change.bc时,我可以看到变化。