2015-07-11 72 views
1


我已经展开使用下面的命令文件a.bc内环路取下循环回边:
opt -loops -loop-rotate -loop-simplify -loop-unroll -unroll-count=3 -unroll-allow-partial -debug a.bc -o a.loop.bc
现在,我需要从一个函数里面所有的循环除去背边,说F。我想创建一个llvm通道,它将从循环中找到退出块(假设只有1个退出块),然后用每个循环的退出块的边缘替换后沿。
有没有直接的方法来做到这一点?LLVM:在功能

回答

0

所以,如果我没有弄错你想拥有一个独特的退出块为所有循环?如果所有的循环都有不断的行程计数,那么在出口块处没有任何phi节点,所以它们很容易连接它们,否则有一些出口phi节点,那么你应该重建它们以保持SSA的优势属性,这可能不是直接的,你可以在本书的第5章找到不同的方法(你可以下载这本书): SSA book