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