[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