summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp
diff options
context:
space:
mode:
authorKit Barton <kbarton@ca.ibm.com>2015-08-06 19:01:57 +0000
committerKit Barton <kbarton@ca.ibm.com>2015-08-06 19:01:57 +0000
commita7bf96ab5c6971d9bd86eb0c87ea4fc9411d663f (patch)
tree9c41fd739562fe04d1288c406f9b6279fe480a9a /llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp
parent327ce8fc11966da2178aee1952bfa399624b00be (diff)
downloadbcm5719-llvm-a7bf96ab5c6971d9bd86eb0c87ea4fc9411d663f.tar.gz
bcm5719-llvm-a7bf96ab5c6971d9bd86eb0c87ea4fc9411d663f.zip
Fix possible infinite loop in shrink wrapping when searching for save/restore
points. There is an infinite loop that can occur in Shrink Wrapping while searching for the Save/Restore points. Part of this search checks whether the save/restore points are located in different loop nests and if so, uses the (post) dominator trees to find the immediate (post) dominator blocks. However, if the current block does not have any immediate (post) dominators then this search will result in an infinite loop. This can occur in code containing an infinite loop. The modification checks whether the immediate (post) dominator is different from the current save/restore block. If it is not, then the search terminates and the current location is not considered as a valid save/restore point for shrink wrapping. Phabricator: http://reviews.llvm.org/D11607 llvm-svn: 244247
Diffstat (limited to 'llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud