[PATCH] D15679: [FIX] Schedule generation PR25879

Tobias Grosser via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 22 02:06:31 PST 2016


grosser added a comment.

Hi Johannes,

I just wanted to put down my latest findings here:

1. The simplified code I proposed is incorrect, as the elements we push back are pushed back to the end of the worklist which will result in an invalid work list when leaving the loop.

2. I believe your patch makes the LoopSchedules map unnecessary. As we now always process a stack of loops. Consequently, we could use a single stack of type:

  struct BuildScheduleInfo {
    Loop *L;
    isl_schedule *Schedule;
    unsigned *NumBBsProcessed;
  }
  SmallVectorImpl<struct BuildScheduleInfo*> &LoopStack

instead of the LoopSchedules map. I think using such a stack is preferable, as as it indicates nicely that there is only one active loop at a time.

After having thought about this code now for a while I think I understood all the corner cases. Thanks for your patience!


http://reviews.llvm.org/D15679





More information about the llvm-commits mailing list