summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
diff options
context:
space:
mode:
authorTobias Grosser <tobias@grosser.es>2016-02-01 11:54:13 +0000
committerTobias Grosser <tobias@grosser.es>2016-02-01 11:54:13 +0000
commitc2fd8b411df93fd6db5d5423ce04ef6b1a4bbbe3 (patch)
tree848cc959a1942fc00039cde3f3fbbca73cfd00fb /lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp
parentd27df3dd3d7b4df6a47222f4cecfd727fcb279ea (diff)
downloadbcm5719-llvm-c2fd8b411df93fd6db5d5423ce04ef6b1a4bbbe3.tar.gz
bcm5719-llvm-c2fd8b411df93fd6db5d5423ce04ef6b1a4bbbe3.zip
ScopInfo: Correct schedule construction
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. We exploit the new property of loops being always completed before additional loops are processed, by removing the LoopSchedules map and instead keep all information in LoopStack. This clarifies that we indeed always only keep a stack of in-process loops, but will never keep incomplete schedules for an arbitrary set of loops. As a result, we can simplify some of the existing code. This patch also adds some more documentation about how our schedule construction works. This fixes http://llvm.org/PR25879 This patch is an modified version of Johannes Doerfert's initial fix. Differential Revision: http://reviews.llvm.org/D15679 llvm-svn: 259354
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/api/multiple-debuggers/testprog.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud