[llvm-dev] Polly Dependency Analysis in MyPass

hameeza ahmed via llvm-dev llvm-dev at lists.llvm.org
Sun Jan 28 11:35:24 PST 2018


i donot know how to do the method you said. can you please explain.........

when i was running my written code in the debug mode i didnot get the input
IR values in variables..........

On Sun, Jan 28, 2018 at 11:31 PM, Philip Pfaffe <philip.pfaffe at gmail.com>
wrote:

> HI Hameeza,
>
> what do mean by link is still missing?
>
> Currently it is not possible to use polyhedral information from within
> in-tree LLVM passes. This is because Polly is not currently part of the
> LLVM tree, and is only linked into the tools as an external project. I.e.,
> you can't depend on Polly passes in an in-tree pass. What you can do,
> though, is use Polly from an out-of-tree context. If you build your pass as
> a loadable library, you're free to link against Polly and include its
> headers.
>
> Cheers,
> Philip
>
> 2018-01-28 18:20 GMT+01:00 hameeza ahmed via llvm-dev <
> llvm-dev at lists.llvm.org>:
>
>> 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<AssumptionCacheTra
>> cker>().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.
>>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180129/be88a86b/attachment.html>


More information about the llvm-dev mailing list