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