2012-01-30 70 views
1

1:%MUL2 = FMUL浮子%1,%1的指令集的下一个节点在LLVM IR

2:%MUL3 = FMUL浮%MUL2,%1

3:%MUL4 = FMUL浮%MUL3,%1

4:%mul5 = FMUL浮%MUL4,%1

5:%mul6 = FMUL浮%mul5,%1

6:%mul7 = FMUL浮动% mul6,%1

7:store float%mul5,float *%x,align 4,!tbaa!0

我想将%mul5的下一个节点设置为%mul7。 getNextNode()函数将下一个节点作为%mul6(我想要删除)。有没有什么功能可以做到这一点?

回答

4

getNextNode()是深入LLVM API内部的内部实现细节。你不应该使用它。您使用标准LLVM API来操作指令列表:迭代器和IRBuilder。有关更多信息,请参阅http://llvm.org/docs/ProgrammersManual.html#simplechangeshttp://llvm.org/doxygen/classllvm_1_1IRBuilder.html

此外,在删除%mul6之前,您必须替换它的所有用途。

+0

我已经使用replaceAllUsesWith()来替换它的所有用法。我无法删除mul6和mul7,因为它仍然与前一条指令mul4相关联。由于存在依赖关系,因此在删除mul7和mul6后,我得到一个StackDump。请建议如何删除mul6和mul7。 – 2012-01-31 04:17:19

+0

你有没有想过用依赖关系来处理删除的正确方法? – RouteMapper 2013-08-29 14:07:11