Перебор циклов с помощью LoopInfoWrapperPass в llvm

Я использую 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. Может ли кто-нибудь определить проблему заранее?

0 ответов

Я знаю, что уже поздно, но на случай, если у кого-то возникнет такая же проблема.

Вы скопировали строку цикла for? Это могло быть причиной проблемы. В таком случае удалите и снова добавьте письмо, вызывающее проблему.

Другие вопросы по тегам