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

Sebastian Pop spop at codeaurora.org
Wed Oct 10 13:32:36 PDT 2012


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

Sebastian
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation




More information about the llvm-commits mailing list