[llvm-commits] Using SCEVExpander for Polly (was Re: [PATCH] Multidimensional Array Index Delinearization Analysis)

Andrew Trick atrick at apple.com
Wed Oct 10 17:24:59 PDT 2012


On Oct 10, 2012, at 1:32 PM, Sebastian Pop <spop at codeaurora.org> wrote:

> Hi Andy,
> 
> On Mon, Oct 1, 2012 at 1:00 PM, Andrew Trick <atrick at apple.com> wrote:
>> A related problem is that we don't know where the boundary of SCEV analysis should be. It is designed as a global analysis, but the client usually wants an expression only involving the current loop nest. LCSSA bounds the analysis in some cases, but it is entirely arbitrary.
>> 
>> So, for your sibling loops:
>> for i
>>  for j
>> for k
>> 
>> Recurrences over k may or may not contain recurrences over i.
> 
> The way I implemented the scalar evolution analysis in GCC is to be
> a function of a loop nest: that restricts the scope of the analysis.
> So the analysis is split into two phases: first a symbolic analysis bounded
> to the loop containing the analyzed scalar, and then an instantiation
> phase that will analyze and instantiate all the symbolic names in an outer
> loop nest.
> 
> You may want to have a look at this paper that describes this "delayed"
> mechanism: Induction Variable Analysis with Delayed Abstractions.
> http://www.cri.ensmp.fr/classement/doc/A-371.pdf

That makes sense to me. Thanks for pointing me to your work. It's a great reference for anyone thinking about improving SCEV.

-Andy



More information about the llvm-commits mailing list