Llvm 使用“时,如何修复未定义的符号?”;LoopInfo::getLoopFor";?

Llvm 使用“时,如何修复未定义的符号?”;LoopInfo::getLoopFor";?,llvm,llvm-c++-api,Llvm,Llvm C++ Api,我试图写一个通过每个基本块的过程,我想确定每个基本块是否在循环中 我添加了LoopInfo作为必要的分析: virtualvoid getAnalysisUsage(AnalysisUsage&AU)const{ AU.setscfg(); AU.addRequired(); AU.addPreserved(); } 然后调用getLoopFor: virtualbool runOnFunction(函数和函数){ b(bb); 返回false; } 虚拟空间优化bb(基本块和bb){ Loo

我试图写一个通过每个基本块的过程,我想确定每个基本块是否在循环中

我添加了
LoopInfo
作为必要的分析:

virtualvoid getAnalysisUsage(AnalysisUsage&AU)const{
AU.setscfg();
AU.addRequired();
AU.addPreserved();
}
然后调用
getLoopFor

virtualbool runOnFunction(函数和函数){
b(bb);
返回false;
}
虚拟空间优化bb(基本块和bb){
LoopInfo&LI=getAnalysis();

errs()我假设您包含了正确的头。在下面的代码中,您将传递什么作为
bb

virtual bool runOnFunction(Function &Func) {
OptimizeBB(bb);
return false;
}
您需要迭代
Func
以获取
Func
中的BBs,然后将其传递给
OptimizeBB()

试试这个

virtual bool runOnFunction(Function &Func) {
     for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
          OptimizeBB(bb);
     return false;
}

这是一个basicblock(basicblock*bb)@IanTsai请尝试在LoopInfo.h中注释以下外部声明,并构建在根llvm目录上;