如何将指令替换为值

How do I replace an instruction with a value?

本文关键字:替换 指令      更新时间:2023-10-16

我正在用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并将该指令的所有用法替换为。做。