Thanks Michael, I will go through the ScalarEvolution module in more detail.
Thanks and Regards
Karthik Bhat
Sender : Michael Zolotukhin<mzolotukhin@apple.com>
Title : Re: [LLVMdev] Question on Loop Normalization in LLVM
Hi Karthik,
This is what SCEV (ScalarEvolution) does in LLVM, though it doesn’t have to be directly reflected in the IR.
SCEV analyzes the program and for all expressions in a loop tries to compute a descriptor of its behavior (called SCEV-expression). E.g for you first loop for induction variable it will compute a SCEV expression: <7,+,1>, which means an induction variable with start value 7 and positive stride 1. These expressions could be nested, i.e. start value could be an induction variable of outer loop, for instance. With this info, one don’t need to rewrite the loop IR unless it’s profitable for some other reason (e.g. Loop Strength Reduction, LSR, can do that to make code faster).
Best regards,
Michael