Displaying 20 results from an estimated 27 matches for "scevcouldnotcompute".
2009 Feb 26
2
[LLVMdev] SCEVCouldNotCompute
We've upgraded to llvm 2.4 and we're hitting an assert in SCEV:
llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:669: RetVal
llvm::SCEVVisitor<SC,
RetVal>::visitCouldNotCompute(llvm::SCEVCouldNotCompute*) [with SC =
llvm::SCEVExpander, RetVal = llvm::Value*]: Assertion `0 && "Invalid use of
SCEVCouldNotCompute!"' failed.
This happens in SCEVExpander::visitAddRecExpr where we drop down
to this code:
// If this is a chain of recurrences, turn it into a closed form, using...
2011 Nov 21
4
[LLVMdev] How to make Polly ignore some non-affine memory accesses
2011/11/21 Tobias Grosser <tobias at grosser.es>:
> On 11/20/2011 04:36 PM, Marcello Maggioni wrote:
>>
>> Sorry for the noobish question, but what kind of subscripts generate a
>> SCEVCouldNotCompute from the SCEV engine?
>> I tried for a while but I wasn't able to trigger that
>
> Hi Marcello,
>
> the SCEV returns SCEVCouldNotCompute in case it cannot analyze an expression
> or if the analysis would be to complicated. I am currently
> not sure if this may actually...
2009 Feb 27
0
[LLVMdev] SCEVCouldNotCompute
David Greene wrote:
> We've upgraded to llvm 2.4 and we're hitting an assert in SCEV:
>
> llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:669: RetVal
> llvm::SCEVVisitor<SC,
> RetVal>::visitCouldNotCompute(llvm::SCEVCouldNotCompute*) [with SC =
> llvm::SCEVExpander, RetVal = llvm::Value*]: Assertion `0 && "Invalid use of
> SCEVCouldNotCompute!"' failed.
>
> This happens in SCEVExpander::visitAddRecExpr where we drop down
> to this code:
>
> // If this is a chain of recurrences,...
2009 Feb 28
1
[LLVMdev] SCEVCouldNotCompute
...Nick Lewycky wrote:
> David Greene wrote:
> > We've upgraded to llvm 2.4 and we're hitting an assert in SCEV:
> >
> > llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:669: RetVal
> > llvm::SCEVVisitor<SC,
> > RetVal>::visitCouldNotCompute(llvm::SCEVCouldNotCompute*) [with SC =
> > llvm::SCEVExpander, RetVal = llvm::Value*]: Assertion `0 && "Invalid use
> > of SCEVCouldNotCompute!"' failed.
> >
> > This happens in SCEVExpander::visitAddRecExpr where we drop down
> > to this code:
> >
> > // If...
2011 Nov 21
2
[LLVMdev] How to make Polly ignore some non-affine memory accesses
Sorry for the noobish question, but what kind of subscripts generate a
SCEVCouldNotCompute from the SCEV engine?
I tried for a while but I wasn't able to trigger that.
2011/11/20 Tobias Grosser <tobias at grosser.es>:
> On 11/20/2011 03:01 AM, Marcello Maggioni wrote:
>>
>> 2011/11/19 Tobias Grosser<tobias at grosser.es>:
>>>
>>> On 11/1...
2011 Nov 21
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
On 11/20/2011 04:36 PM, Marcello Maggioni wrote:
> Sorry for the noobish question, but what kind of subscripts generate a
> SCEVCouldNotCompute from the SCEV engine?
> I tried for a while but I wasn't able to trigger that
Hi Marcello,
the SCEV returns SCEVCouldNotCompute in case it cannot analyze an
expression or if the analysis would be to complicated. I am currently
not sure if this may actually happen when calling getSCEV(),...
2011 Dec 04
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
On 11/21/2011 12:44 PM, Marcello Maggioni wrote:
> 2011/11/21 Tobias Grosser<tobias at grosser.es>:
>> On 11/20/2011 04:36 PM, Marcello Maggioni wrote:
>>>
>>> Sorry for the noobish question, but what kind of subscripts generate a
>>> SCEVCouldNotCompute from the SCEV engine?
>>> I tried for a while but I wasn't able to trigger that
>>
>> Hi Marcello,
>>
>> the SCEV returns SCEVCouldNotCompute in case it cannot analyze an expression
>> or if the analysis would be to complicated. I am currently
>> no...
2010 Nov 23
5
[LLVMdev] how to eliminate dead infinite loops?
Most of my programs contain loops that the LoopDeletion pass is unable
to remove. It appears that the following code in LoopDeletion.cpp:152
is the culprit:
ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
const SCEV *S = SE.getMaxBackedgeTakenCount(L);
if (isa<SCEVCouldNotCompute>(S))
return Changed;
So, LoopDeletion thinks my loops might be infinite so it does not delete
them - even if they do not write to any of the function return values.
Is there a way to flag a loop as non-infinite? Or will I need to create
my own modified loop deletion pass that can elim...
2010 Nov 24
0
[LLVMdev] how to eliminate dead infinite loops?
...ain loops that the LoopDeletion pass is unable
> to remove. It appears that the following code in LoopDeletion.cpp:152
> is the culprit:
>
> ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
> const SCEV *S = SE.getMaxBackedgeTakenCount(L);
> if (isa<SCEVCouldNotCompute>(S))
> return Changed;
>
> So, LoopDeletion thinks my loops might be infinite so it does not delete
> them - even if they do not write to any of the function return values.
> Is there a way to flag a loop as non-infinite? Or will I need to create
> my own modified loop d...
2015 Oct 16
2
question about llvm partial unrolling/runtime unrolling
...rolling process hits this code in LoopUnrollRuntime.cpp
>
> // Only unroll loops with a computable trip count and the trip count
> needs
> // to be an int value (allowing a pointer type is a TODO item)
> const SCEV *BECountSC = SE->getBackedgeTakenCount(L);
> if (isa<SCEVCouldNotCompute>(BECountSC) ||
> !BECountSC->getType()->isIntegerTy())
> return false;
>
> BECountSC=0xcccccccc and returns false here.
>
> Based on the comments it looks like I still need a constant loop counter.
> Is there a way to unroll with non-constant loop counter as...
2015 Oct 12
2
question about llvm partial unrolling/runtime unrolling
...l doesn't unroll.
The unrolling process hits this code in LoopUnrollRuntime.cpp
// Only unroll loops with a computable trip count and the trip count needs
// to be an int value (allowing a pointer type is a TODO item)
const SCEV *BECountSC = SE->getBackedgeTakenCount(L);
if (isa<SCEVCouldNotCompute>(BECountSC) ||
!BECountSC->getType()->isIntegerTy())
return false;
BECountSC=0xcccccccc and returns false here.
Based on the comments it looks like I still need a constant loop counter.
Is there a way to unroll with non-constant loop counter as in the example
above?
Thanks,
Fr...
2010 Nov 24
0
[LLVMdev] how to eliminate dead infinite loops?
...contain loops that the LoopDeletion pass is unable
> to remove. It appears that the following code in LoopDeletion.cpp:152
> is the culprit:
>
> ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
> const SCEV *S = SE.getMaxBackedgeTakenCount(L);
> if (isa<SCEVCouldNotCompute>(S))
> return Changed;
>
> So, LoopDeletion thinks my loops might be infinite so it does not delete
> them - even if they do not write to any of the function return values.
> Is there a way to flag a loop as non-infinite? Or will I need to create
> my own modified loo...
2010 Nov 25
3
[LLVMdev] how to eliminate dead infinite loops?
...opDeletion pass is unable
>> to remove. It appears that the following code in LoopDeletion.cpp:152
>> is the culprit:
>>
>> ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
>> const SCEV *S = SE.getMaxBackedgeTakenCount(L);
>> if (isa<SCEVCouldNotCompute>(S))
>> return Changed;
>>
>> So, LoopDeletion thinks my loops might be infinite so it does not delete
>> them - even if they do not write to any of the function return values.
>> Is there a way to flag a loop as non-infinite? Or will I need to create
>>...
2009 Oct 13
1
[LLVMdev] 65bit integer math
...lt;< Log2_32_Ceil(W + T);
// Cray: Truncate to 64 bits. It's what we did with LLVM 2.3 and
// while it can create miscompilations in some cases if the
// computation happens to overflow, it's no worse than what we did
// before.
if (CalculationBits > 64) {
//return new SCEVCouldNotCompute();
CalculationBits = 64;
DEBUG(DOUT << "*** [dag] SEVERE WARNING: SCEV calculation truncated to 64
bits, check for miscompilation! ***\n");
}
I have never found a test where this actually causes a problem. And we have
tens of thousands of tests.
It i...
2011 Nov 03
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...or (to me) of the SCEV analysis
> of the loop bound of the external loop I posted.
> When in ScopDetection it gets the SCEV of the external loop bound in
> the "isValidLoop()" function with:
> const SCEV *LoopCount = SE->getBackedgeTakenCount(L);
>
> It returns a SCEVCouldNotCompute, but if I change the "if" block
> inside the loop from:
> if (i+j> 1000)
> to:
> if (i> 1000)
>
> that SCEV results valid.
>
> Later in the ScopInfo pass it crashes analyzing the SCEV of the
> comparison expression (in buildConditionSets ) . It...
2010 Nov 26
0
[LLVMdev] how to eliminate dead infinite loops?
...t;>> to remove. It appears that the following code in LoopDeletion.cpp:152
>>> is the culprit:
>>>
>>> ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
>>> const SCEV *S = SE.getMaxBackedgeTakenCount(L);
>>> if (isa<SCEVCouldNotCompute>(S))
>>> return Changed;
>>>
>>> So, LoopDeletion thinks my loops might be infinite so it does not delete
>>> them - even if they do not write to any of the function return values.
>>> Is there a way to flag a loop as non-infinite? Or will I ne...
2011 Nov 20
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
On 11/20/2011 03:01 AM, Marcello Maggioni wrote:
> 2011/11/19 Tobias Grosser<tobias at grosser.es>:
>> On 11/18/2011 01:34 PM, Marcello Maggioni wrote:
>>>
>>> Ok , this is what I believe is the final patch that adds the
>>> non-affine accept functionality to Polly, this should have no issues.
>>>
>>> I added three tests, two in ScopInfo
2011 Nov 02
5
[LLVMdev] How to make Polly ignore some non-affine memory accesses
...ound out a very strange behavior (to me) of the SCEV analysis
of the loop bound of the external loop I posted.
When in ScopDetection it gets the SCEV of the external loop bound in
the "isValidLoop()" function with:
const SCEV *LoopCount = SE->getBackedgeTakenCount(L);
It returns a SCEVCouldNotCompute, but if I change the "if" block
inside the loop from:
if (i+j > 1000)
to:
if (i > 1000)
that SCEV results valid.
Later in the ScopInfo pass it crashes analyzing the SCEV of the
comparison expression (in buildConditionSets ) . It's like if it
recognizes that "i&quo...
2010 Nov 24
2
[LLVMdev] how to eliminate dead infinite loops?
...eletion pass is unable
>> to remove. It appears that the following code in LoopDeletion.cpp:152
>> is the culprit:
>>
>> ScalarEvolution& SE = getAnalysis<ScalarEvolution>();
>> const SCEV *S = SE.getMaxBackedgeTakenCount(L);
>> if (isa<SCEVCouldNotCompute>(S))
>> return Changed;
>>
>> So, LoopDeletion thinks my loops might be infinite so it does not delete
>> them - even if they do not write to any of the function return values.
>> Is there a way to flag a loop as non-infinite? Or will I need to create
>>...
2009 Feb 24
2
[LLVMdev] Detecting counted loops
I need to be able to detect a well-behaved loop. (i.e one where exp1
assigns a value to an int i, exp2 compares i with a loop constant,
exp3 adjusts i by a loop constant, and the inner block has no
assignments to i.)
I need this because in Sun's Java VM garbage collection only takes
place at safepoints, so a potentially unbounded loop must call
safepoint() some time. However, safepoints are