[PATCH] D15679: [FIX] Schedule generation PR25879
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 20 09:17:00 PST 2015
jdoerfert created this revision.
jdoerfert added reviewers: grosser, Meinersbur.
jdoerfert added a subscriber: Polly.
For schedule generation we assumed that the reverse post order
traversal used by the domain generation is sufficient, however it is
not. Once a loop is discovered we have to completely traverse it
before we can generate the schedule for any block/region that is only
reachable through a loop exiting block.
To this end, we add a "loop stack" that will keep track of loops we
discovered during the traversal but have not yet traversed completely.
We will never visit a basic block (or region) outside the most recent
(thus smallest) loop in the loop stack but instead queue such blocks
(or regions) in a waiting list. If the waiting list is not empty and
(might) contain blocks from the most recent loop in the loop stack the
next block/region to visit is drawn from there, otherwise from the
reverse post order iterator.
http://reviews.llvm.org/D15679
Files:
include/polly/ScopInfo.h
lib/Analysis/ScopInfo.cpp
test/ScopInfo/wrong_schedule.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D15679.43332.patch
Type: text/x-patch
Size: 6070 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151220/43a44f58/attachment.bin>
More information about the llvm-commits
mailing list