从 functions/modules 中提取 llvm 位码中的循环
Extracting loops in llvm bitcode from functions/modules
是否可以从 llvm 位码中提取函数或模块内的循环?
我正在将 LLVM LoopPass
迁移到独立的位码 reader/writer 应用程序。迁移的主要原因是调试 opt passes 的困难,但也有其他原因。我搜索了 Function/Module/BasicBlock 的 API,但找不到任何相近的内容。
由于 LoopPass 正是这样做的,我很确定这是可能的,对吗?我的意思是这样的:
Function f;
for (auto loop = f.getLoops().begin(); loop != f.getLoops().end(); loop++)
{
// process loop here
}
你想要的叫做LoopInfo,你通过支配树创建它:
DominatorTree dt(function);
LoopInfo li(dt);
for(Instruction * foo : bar) {
Loop * l = li.getLoopFor(foo->getParent());
是否可以从 llvm 位码中提取函数或模块内的循环?
我正在将 LLVM LoopPass
迁移到独立的位码 reader/writer 应用程序。迁移的主要原因是调试 opt passes 的困难,但也有其他原因。我搜索了 Function/Module/BasicBlock 的 API,但找不到任何相近的内容。
由于 LoopPass 正是这样做的,我很确定这是可能的,对吗?我的意思是这样的:
Function f;
for (auto loop = f.getLoops().begin(); loop != f.getLoops().end(); loop++)
{
// process loop here
}
你想要的叫做LoopInfo,你通过支配树创建它:
DominatorTree dt(function);
LoopInfo li(dt);
for(Instruction * foo : bar) {
Loop * l = li.getLoopFor(foo->getParent());