[llvm-dev] loop canonical variables

Sanjoy Das via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 25 14:48:49 PDT 2017


Hi Anastasiya,

If it fits you use case, you can consider walking the loop header and
calling getSCEV() on all of the PHI nodes in the header.  This will
give you a SCEV* which should be easier to analyze than manually
inspecting PHI cycles.

Thanks!
-- Sanjoy


On Tue, Jul 25, 2017 at 11:42 AM, Michael Kruse via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> 2017-07-25 19:32 GMT+02:00 Anastasiya Ruzhanskaya
> <anastasiya.ruzhanskaya at frtk.ru>:
>> I call this function and it returns only "i" in my example.  Are there any
>> ways to return "j" also?
>
> That would contradict it being the /canonical/ induction variable, wouldn't it?
>
> If you look into the imlplementation of
> getCanonicalInductionVariable(), it just walks the IR instructions and
> checks some conditions. You can have your own implementation that,
> instead of returning the first matching PHI, return all matching PHIs.
> SimplifyIndVar won't try to canonicalize, though.
>
> Michael
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list