[PATCH] LoopUnroll: Create sub-loops in LoopInfo

Duncan P. N. Exon Smith dexonsmith at apple.com
Tue Oct 7 14:47:57 PDT 2014


Thanks Andy -- r219241.

> On Oct 7, 2014, at 12:07 PM, Andrew Trick <atrick at apple.com> wrote:
> 
> Thanks Duncan.
> 
> SCEV should be fine w.r.t new loops. It has a pretty straight forward cache from SCEV (expression pointer) to Loop + “disposition” (was the expression invariant). If it sees a new loop, it will just recompute the loop disposition.
> 
> My only concern here is that we probably need to tell SCEV to forget any inner loop within the unrolled loop (SE->forgetLoop(L)). In most cases this probably isn’t necessary, but I can’t prove to myself that it’s safe since values flowing into the loop have changed. It doesn’t look like we’re doing that. I suggest calling forgetLoop on each “old” inner loop.
> 
> -Andy
> 
>> On Oct 6, 2014, at 3:34 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
>> 
>> This fixes the crasher in PR20987 by creating sub-loop info in
>> -loop-unroll.
>> 
>> While the attached patch adds the missing data to `LoopInfo`, I'm not
>> sure what the contract is with SCEV (which can have a reference to
>> `LoopInfo`).  Have I created a new problem, or does this look okay?
>> 
>> <0001-LoopUnroll-Create-sub-loops-in-LoopInfo.patch>
> 





More information about the llvm-commits mailing list