在llvm中使用LoopInfoWrapperPass迭代循环

时间:2017-04-25 14:16:38

标签: llvm llvm-c++-api llvm-4.0

我正在使用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;
        }
  }
}

我得到一个迷路错误&#39; \ 342&#39;在for循环线的程序中,任何人都可以事先确认问题

1 个答案:

答案 0 :(得分:0)

我知道已经晚了,但是如果有人遇到同样的问题。

您是否复制粘贴了for循环行?这可能是导致问题的原因。如果是这样,请删除并重新添加引起问题的字母。