如何用值替换指令?

How do I replace an instruction with a value?

我正在用 C++ 编写。假设我有

define void @ha(i32) #0 {
  %2 = add nsw i32 %0, 1
  %3 = sub nsw i32 %2, 1
  ret void
}

我想更换

%3 = sub nsw i32 %2, 1

%3 = %0

我试过了

inst_iter->replaceAllUsesWith(val);
inst_iter->eraseFromParent();

和 ReplaceInstWithValue(inst_iter->getParent()->getInstList(), inst_iter, val);

可以理解,第一个不起作用,因为它没有其他参考;对于第二个,它只是删除指令。我也找不到合适的函数(而且我没有包含 IRBuilder)。感谢任何帮助,谢谢!

您想要的功能是replaceAllUsesWith()。找到您的 sub 并将该指令的所有用途替换为。完成。