diff options
author | Eli Friedman <efriedma@codeaurora.org> | 2018-11-09 22:35:26 +0000 |
---|---|---|
committer | Eli Friedman <efriedma@codeaurora.org> | 2018-11-09 22:35:26 +0000 |
commit | 15930bf35241354d4c2b92a9c09f1461f96901bc (patch) | |
tree | 9a40392683d3a82dc1c74f22b3d377deccce8a3b /lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py | |
parent | c0e793d6543fc97c328dd3cf1b6f0708f3ec11be (diff) | |
download | bcm5719-llvm-15930bf35241354d4c2b92a9c09f1461f96901bc.tar.gz bcm5719-llvm-15930bf35241354d4c2b92a9c09f1461f96901bc.zip |
[JumpThreading] Fix exponential time algorithm computing known values.
ComputeValueKnownInPredecessors has a "visited" set to prevent infinite
loops, since a value can be visited more than once. However, the
implementation didn't prevent the algorithm from taking exponential
time. Instead of removing elements from the RecursionSet one at a time,
we should keep around the whole set until
ComputeValueKnownInPredecessors finishes, then discard it.
The testcase is synthetic because I was having trouble effectively
reducing the original. But it's basically the same idea.
Instead of failing, we could theoretically cache the result instead.
But I don't think it would help substantially in practice.
Differential Revision: https://reviews.llvm.org/D54239
llvm-svn: 346562
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/interpreter/TestCommandInterpreterAPI.py')
0 files changed, 0 insertions, 0 deletions