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

Tobias Grosser tobias at grosser.es
Mon Nov 14 05:59:24 PST 2011


On 11/14/2011 02:45 PM, Marcello Maggioni wrote:
> 2011/11/14 Tobias Grosser<tobias at grosser.es>:
>> On 11/14/2011 01:24 AM, Marcello Maggioni wrote:
>>>
>>> Hi Tobias.
>>>
>>> I worked on enabling Polly accepting non affine memory accesses and I
>>> produced a patch.
>>
>> Great.
>>
>>> I saw that there were a lot of updates in Polly recently, so I had to
>>> redo a lot of the work I did and that slowed me quite a bit.
>>
>> Ups, sorry! However, I believe without these changes detecting non-affine
>> memory access functions would have been a lot more complicated.
>
> Indeed! The patch almost shrinked to half the code it was before those
> changes! Great work.

Thanks. (You motivated me to fix this, when you asked about non-affine 
access functions)

>> this should be
>>     } else {
>>
>>> +    Type = MayWrite;
>>
>> You are right, we should use may-accesses here. But why always setting the
>> type to may-write? A read should remain a read (as there is no difference
>> between read and may-read).
>
> You are right, in the patch for the old version that was handled
> correctly, I don't know how this reverted back to this way in the
> patch for the new version , I'll get it fixed.

Wonderful. Very cool that you realized I added MayWrite exactly for this 
case.

>>> +         Functions.push_back(std::make_pair(IRAccess(Type,
>>> +
>>>   BasePointer->getValue(),
>>> +                                                  AccessFunction, Size,
>>> false),
>>> +&Inst));
>>> +      }
>>> +    }
>>>     }
>>>
>>>     if (Functions.empty())
>
> Yeah, there are quite a few stylistic problems actually, my bad!! I'll
> get all the style problems fixed as fast as possible! Sorry for that.

Alright. I failed on this myself, which is why Polly is not everywhere 
perfect. Still, we should try to follow the LLVM style guide.

BTW, if you find any problems in patches I commit or in Polly itself or 
if your find anything that you don't understand, please go ahead and let 
me know. Even if it is correct and you just did not get it, I think this 
is a documentation bug and should be fixed.

>> Besides the comments above, the patch looks great. It is a nice improvement
>> to Polly. Can you repost it after the comments are addressed? Also could you
>> include a minimal test case in the patch, that verifies this features is
>> working correctly.
>
> Thank you, for your time Tobias explaining all the issues with the
> patch so throughly and in a clear manner .

You did a good job working on the patch. It is great if people go ahead, 
work for themselves and send in a patch that works. Even better if the 
right approach was taken and just some smaller remarks are necessary.

> Should I make a specific subdirectory for the test case?

No. I think you can put one test case in test/ScopInfo that runs 
-polly-scops -analyze and one in test/CodeGeneration that ensures that 
the correct code is generated.

> >> Thanks
>> Tobi
>>
>> P.S.: Please post patches to the mailing lists.

> What do you mean with post patches to the mailing lists? Do you mean
> in llvm-dev or llvm-commit?
> The previous patch has been posted on llvm-dev, was that wrong?

Normally patches should either be posted on llvm-commit or 
polly-dev at googlegroups.com.

In this case it seems you sent two separate emails, one to me and 
another to Sebastian and llvmdev. I just saw the one to me and did not 
see that another one was sent to llvmdev. Just send next time one email 
with all of us copied.

Cheers
Tobi



More information about the llvm-dev mailing list