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;
}
}
Я делал opt -load sample.dylib -passname sample.bc> / dev / null вместо того, чтобы направлять его в другой файл как> change.bc. Когда я делаю это и делаю llvm-dis из change.bc, я вижу изменения.
Других решений пока нет …