Я использую LoopInfoWrapperPass для создания Loopinfo, но тогда я не могу использовать Loopinfo для повторения циклов в моей функции, вот код. Я получаю сообщение об ошибке сборки при использовании команды make
#include "llvm/Pass.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/Transforms/IPO/PassManagerBuilder.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/raw_ostream.h"
#include "iostream"
#include "llvm/Pass.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Instructions.h"
использование пространства имен llvm;
namespace {
struct SkeletonPass : public FunctionPass {
static char ID;
SkeletonPass() : FunctionPass(ID) {}
void getAnalysisUsage(AnalysisUsage &AU) const override {
AU.setPreservesCFG();
AU.addRequired<LoopInfoWrapperPass>();
}
virtual bool runOnFunction(Function &F){
LoopInfo &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
for( LoopInfo::iterator i = LI.begin(), e=LI.end(); i != e; ++i){
//some code here
}
return false;
}
}
}
Я получаю случайную ошибку «\ 342» в программе в строке с циклом for. Может ли кто-нибудь определить проблему, спасибо заранее
LoopInfo
? Мне кажется нормально. Вам нужно что-то сделать в теле циклаfor
, например:(*i)->print(llvm::outs(), 0);
. В противном случае это мало что дает. - person compor   schedule 25.04.2017