我试图了解如何用 LLVM 替换指令并确保设置为等于原始指令的引用可以重置为我创建的新指令(对于我的一生,我真的很难浏览 LLVM 文档的时间)
假设我有指令 i 并且我知道这是我想要替换的 - 我正在这样做
BinaryOperator::Create(Instruction::Add, value, operand, "", i);
i->eraseFromParent();
要创建我的新指令并将其放在我要替换的指令之前。然后我删除我。
我的问题是旧指令被设置为寄存器,后来 %2 被重新用于存储(例如,如下所示)。
%2 = mul %0, 2
在删除指令时,我删除了整行,包括 %2,并且我假设我的新指令设置为其他一些寄存器。我该如何处理?我已经看到有一个可以使用的 ReplaceInstWithInst 调用,但我不知道它是否能解决我的问题/它是如何工作的。