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

Marcello Maggioni hayarms at gmail.com
Mon Oct 3 07:04:42 PDT 2011

Hi Tobias,

thanks for the answer. I'll try to give a look to the code you pointed
me to , and I'll try to make the modification myself. I'm new to LLVM
and Polly, but the code of both seem clean and understandable, so I
hope to be able to do it myself. In case I'll ask here for support :)


2011/10/1 Tobias Grosser <tobias at grosser.es>:
> On 10/01/2011 03:26 PM, Marcello Maggioni wrote:
>> Hello everyone,
>> I'm trying to use LLVM+Polly to obtain a polyhedral representation of
>> some loops to use later for passes I want to implement, but seems like
>> Polly will stop when reaching any statement that has non-affine access
>> functions of the loop bounds discarding the whole SCoP entirely.
>> What I would like to achieve is still getting some information for the
>> statements that , instead, have affine access functions, practically
>> "ignoring" the non-affine ones.
>> There is a way to do such a thing?
> Hi Marcello,
> this is not yet integrated into Polly, but a very valuable extension which I
> planned to integrate myself. In case you want to give it a try,
> I am very glad to help you.
> Basically, what you want is to adapt lib/Analysis/ScopDetection.cpp to
> not reject non-affine constructs. In lib/Analysis/ScopInfo.cpp we would
> need to adapt the translation into the polyhedral description. Instead of
> creating a map defining an affine must access (such as
> Stmt[i,j] -> A[2 * i + j]), we create a map that defines a may access to all
> elements of the corresponding array. Something like 'Stmt[i,j] -> A[x]'.
> Cheers
> Tobi

More information about the llvm-dev mailing list