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->
>> >> > +
>>...
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->
>>> >...
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->...