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


person Jaswinder    schedule 25.04.2017    source источник
comment
Это не похоже на C... C - это не C++. Также, пожалуйста, сделайте правильный отступ в коде.   -  person kaldoran    schedule 25.04.2017
comment
Не могли бы вы уточнить? Что значит, что вы не можете использовать LoopInfo? Мне кажется нормально. Вам нужно что-то сделать в теле цикла for, например: (*i)->print(llvm::outs(), 0);. В противном случае это мало что дает.   -  person compor    schedule 25.04.2017
comment
Я не могу его скомпилировать, выдает следующую ошибку   -  person Jaswinder    schedule 25.04.2017
comment
/home/jaswinder/Music/llvm-pass-skeleton-master/skeleton/Skeleton.cpp:24:7: ошибка: '\342' в программном коде для (LoopInfo::iterator i = LI.begin(), e = LI.end(); i != e; ++i) { code ^ /home/jaswinder/Music/llvm-pass-skeleton-master/skeleton/Skeleton.cpp:24:7: error: бродячий '\200 ' в программе   -  person Jaswinder    schedule 25.04.2017
comment
в основном я получаю случайную ошибку рядом с оператором цикла for, и код не компилируется заранее, спасибо   -  person Jaswinder    schedule 25.04.2017


Ответы (1)


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

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

person nikhs    schedule 16.06.2019