[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