[llvm-dev] Polly Dependency Analysis in MyPass

hameeza ahmed via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 28 09:20:41 PST 2018


I have modified the code as follows; now i am using both scopdetection and
scopinformation before dependency check but i think link is missing...

virtual bool runOnFunction(Function &F)
        {

std::unique_ptr<ScopInfo> Result;
std::unique_ptr<ScopDetection> Result2;
//polly::ScopDetection pl;

auto &LI = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
  auto &RI = getAnalysis<RegionInfoPass>().getRegionInfo();
  auto &AA = getAnalysis<AAResultsWrapperPass>().getAAResults();
  auto &SE = getAnalysis<ScalarEvolutionWrapperPass>().getSE();
  auto &DT = getAnalysis<DominatorTreeWrapperPass>().getDomTree();
  Result2.reset(new ScopDetection(F, DT, SE, LI, RI, AA));



 auto &SD2 = getAnalysis<polly::ScopDetectionWrapperPass>().getSD();



  auto &SE2 = getAnalysis<ScalarEvolutionWrapperPass>().getSE();
  auto &LI2 = getAnalysis<LoopInfoWrapperPass>().getLoopInfo();
  auto &AA2 = getAnalysis<AAResultsWrapperPass>().getAAResults();
  auto const &DL2 = F.getParent()->getDataLayout();
  auto &DT2 = getAnalysis<DominatorTreeWrapperPass>().getDomTree();
  auto &AC2 = getAnalysis<AssumptionCacheTracker>().getAssumptionCache(F);

  Result.reset(new ScopInfo{DL2, SD2, SE2, LI2, AA2, DT2, AC2});


polly::DependenceInfoWrapperPass dp;

auto &SI = *getAnalysis<polly::ScopInfoWrapperPass>().getSI();

  for (auto &It : SI) {
    assert(It.second && "Invalid SCoP object!");
    dp.recomputeDependences(It.second.get(), polly::Dependences::AL_Access);



}



return false;
        }


what to do? please help.....

On Sun, Jan 28, 2018 at 8:30 PM, hameeza ahmed <hahmed2305 at gmail.com> wrote:

> Hello,
>
> I need to analyze dependencies in my llvm ir by using polly. i created a
> new pass called mypass there i added polly dependency analysis pass but
> when i execute this pass in gdb i get no data.
>
> Why is that so?
>
> My code is follows;
>
>
>
> namespace {
> struct mypass : public FunctionPass {
> static char ID;
>
> mypass() : FunctionPass(ID) {
> }
>  virtual bool runOnFunction(Function &F)
>         {
> polly::DependenceInfoWrapperPass dp;
>
> auto &SI = *getAnalysis<polly::ScopInfoWrapperPass>().getSI();
>
>   for (auto &It : SI) {
>     assert(It.second && "Invalid SCoP object!");
>     dp.recomputeDependences(It.second.get(),
> polly::Dependences::AL_Access); }
> virtual void getAnalysisUsage(AnalysisUsage &AU) const
>         {
>
>   AU.addRequiredTransitive<polly::ScopInfoWrapperPass>();
>  AU.setPreservesAll();
>         }
> };
> }
> char mypass::ID = 0;
> static RegisterPass<mypass> X("mypass", "mypass World Pass", false, false);
>
> please help. i have been trying a lot.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180128/ebc83ab4/attachment.html>


More information about the llvm-dev mailing list