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