[LLVMdev] How to make Polly ignore some non-affine memory accesses

Tobias Grosser tobias at grosser.es
Mon Nov 21 03:55:09 PST 2011


On 11/21/2011 03:44 AM, 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
>> not sure if this may actually happen when calling getSCEV(), because
>> getSCEV() could just return a SCEVUnknown referencing the Value itself.
>> Maybe SCEVCouldNotCompute is just generated by functions like
>> SE->getBackedgeTakenCount()?
>>
>> In case you cannot generate a test case that yields to this, I don't think
>> there is a need to try more. Even without such a test case the patch should
>> be OK.
>>
>> Cheers
>> Tobi
>>
>
> Ok, thanks, I'll try other test cases to check if everything is ok,
> better being sure.
>
> About SCOPs with a "bitcast instruction" inside them I see that
> ScopDetection discards those.
> What problems can cause bitcasts to the Scop? Is it related to aliasing?

I don't know. At the moment I wrote the scop detection I was not sure 
that they don't cause any problems, so I conservatively discarded them.
Meanwhile I actually believe the don't introduce any problems and could 
be allowed. However, before changing this, I would like to set up a 
nightly tester that ensures the llvm test suite is compiled correctly.
This would allow us to understand if the support for this construct 
introduces any regressions.

Cheers
Tobi



More information about the llvm-dev mailing list