search for: couldnotcompute

Displaying 11 results from an estimated 11 matches for "couldnotcompute".

2018 Nov 27
2
ScalarEvolution class returns no valid loop exit count
...SE = ScalarEvolution(*func, TLI.getTLI(),AC, DT, LI);* BasicBlock * exitingblock = L->getUniqueExitBlock(); const SCEV * exitingcount = SE.getExitCount (L,exitblock ); } } } ...... Unfortunately I get this result by printing the SCEV exitingcount variable: ***COULDNOTCOMPUTE*** It has been tested that the exitingblock of the loop was calculated successfully. The LLVM IR is parsed and analysed without the usual pass framework. For this reason the use of the getAnalysis<ScalarEvolution>() is not possible. The question is wether there is something I`m doing wrong d...
2012 Nov 16
1
[LLVMdev] ScalarEvolution, HowManyLessThans question for step > 1
Hi, I have a question about some code in ScalarEvolution.cpp, in the function HowManyLessThans. Specifically, this function returns CouldNotCompute if the iteration step is greater than one even when the NoWrap flags are set (if the step goes past the limit and wraps). Here's the comment: } else if (isKnownPositive(Step)) { // Test whether a positive iteration can step past the limit // value and past the maximum va...
2012 Feb 08
2
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...+ DragonEgg 3.0. Even for simple double loops like this one: program test2 integer i,j,k dimension k(100,100) do j=1,100 do i=1,100 k(i,j) = i enddo enddo write(*,*) k(1,30) end make the ScalarEvolution engine return "CouldNotCompute" even for the outer loop (the inner loop is fine). You can find a screenshot of the translation of this loop here (with -view-cfg Polly version): http://i.imgur.com/Jyaqd.png The problem seems to be the fact that the ScalarEvolution can't consider the outer loop exit branch instruction a...
2012 Feb 08
2
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...n::ComputeExitLimit(const Loop > *L, BasicBlock *ExitingBlock) { >   // >   // FIXME: we should be able to handle switch instructions (with a > single exit) >   BranchInst *ExitBr = dyn_cast<BranchInst>(ExitingBlock->getTerminator()); > + >   if (ExitBr == 0) return getCouldNotCompute(); >   assert(ExitBr->isConditional() && "If unconditional, it can't be in loop!"); > > +  BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> > +                                            getSuccessor(0)->getTerminator()); > +  BranchInst* B...
2012 Feb 08
0
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...93,9 +4293,15 @@ ScalarEvolution::ComputeExitLimit(const Loop *L, BasicBlock *ExitingBlock) { // // FIXME: we should be able to handle switch instructions (with a single exit) BranchInst *ExitBr = dyn_cast<BranchInst>(ExitingBlock->getTerminator()); + if (ExitBr == 0) return getCouldNotCompute(); assert(ExitBr->isConditional() && "If unconditional, it can't be in loop!"); + BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> + getSuccessor(0)->getTerminator()); + BranchInst* BrSecondSucc = dyn_cast&...
2012 Feb 08
2
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...>> >   // >> >   // FIXME: we should be able to handle switch instructions (with a >> > single exit) >> >   BranchInst *ExitBr = >> > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); >> > + >> >   if (ExitBr == 0) return getCouldNotCompute(); >> >   assert(ExitBr->isConditional() && "If unconditional, it can't be in >> > loop!"); >> > >> > +  BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> >> > + >> >  getSuccessor(0)->getTerminator());...
2012 Feb 08
0
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...*L, BasicBlock *ExitingBlock) { > > // > > // FIXME: we should be able to handle switch instructions (with a > > single exit) > > BranchInst *ExitBr = > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); > > + > > if (ExitBr == 0) return getCouldNotCompute(); > > assert(ExitBr->isConditional() && "If unconditional, it can't be in > loop!"); > > > > + BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> > > + > getSuccessor(0)->getTerminator()); > > + BranchInst* BrSecond...
2012 Feb 09
2
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...we should be able to handle switch instructions (with a >> >> > single exit) >> >> >   BranchInst *ExitBr = >> >> > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); >> >> > + >> >> >   if (ExitBr == 0) return getCouldNotCompute(); >> >> >   assert(ExitBr->isConditional() && "If unconditional, it can't be in >> >> > loop!"); >> >> > >> >> > +  BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> >> >> > + >&gt...
2012 Feb 08
0
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...t; > // FIXME: we should be able to handle switch instructions (with a > >> > single exit) > >> > BranchInst *ExitBr = > >> > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); > >> > + > >> > if (ExitBr == 0) return getCouldNotCompute(); > >> > assert(ExitBr->isConditional() && "If unconditional, it can't be in > >> > loop!"); > >> > > >> > + BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> > >> > + > >> > getSucc...
2012 Feb 09
0
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...handle switch instructions (with a >>> >> > single exit) >>> >> >   BranchInst *ExitBr = >>> >> > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); >>> >> > + >>> >> >   if (ExitBr == 0) return getCouldNotCompute(); >>> >> >   assert(ExitBr->isConditional() && "If unconditional, it can't be in >>> >> > loop!"); >>> >> > >>> >> > +  BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr-> >>> &gt...
2012 Feb 09
1
[LLVMdev] BackedgeTakenCount calculation for fortran loops and DragonEgg gfortran-4.6
...uctions (with a >>>> >> > single exit) >>>> >> >   BranchInst *ExitBr = >>>> >> > dyn_cast<BranchInst>(ExitingBlock->getTerminator()); >>>> >> > + >>>> >> >   if (ExitBr == 0) return getCouldNotCompute(); >>>> >> >   assert(ExitBr->isConditional() && "If unconditional, it can't be in >>>> >> > loop!"); >>>> >> > >>>> >> > +  BranchInst* BrFirstSucc = dyn_cast<BranchInst>(ExitBr->...