Я пытаюсь понять, как я могу заменить инструкцию LLVM и убедиться, что ссылка, которая была установлена равной исходной команде, может быть сброшена на новую создаваемую команду (для жизнь меня, я действительно трудное время навигации документацию LLVM)LLVM- Замена инструкций, назначенных для ссылки
у меня есть инструкции я, и я знаю, что это то, что я хочу replace- я это делаю
BinaryOperator::Create(Instruction::Add, value, operand, "", i);
i->eraseFromParent();
чтобы создать мое новое вмешательство и поместите его перед тем, как я, меня заменяю. Затем я удаляю i.
Моя проблема в том, что старая инструкция была установлена в регистр, а позже% 2 повторно используется для хранилища (например, ниже, например).
%2 = mul %0, 2
При удалении инструкции я я удалил всю линию, в том числе% 2, и я предполагаю, что моя новая команда находится в какой-то другой регистр. Как я могу позаботиться об этом? Я видел, что есть вызов ReplaceInstWithInst, который я могу использовать, но я понятия не имею, решит ли он мою проблему/как это работает.
Спасибо, это было именно то, что мне нужно - я надеялся, что ReplaceInstWithInst сделал это, но не смог найти окончательного ответа в любом месте – winepretzel