diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-09-16 23:01:39 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-09-16 23:01:39 +0000 |
commit | 87aa1250a90af9d92ad9d6b7b65610a45bf478c1 (patch) | |
tree | 1b03efb7e18a976f79260246004534c1f72cbee3 /lib/Driver/Tools.cpp | |
parent | 733a83b324dc31ac5be3f30f4d05febad0728474 (diff) |
Fix massive LiveVariables regression (due to LiveVariables rewrite) by addressing two performance problems:
- Speed of "merge()", which merged data flow facts. This was doing a set canonicalization on every insertion, which was super slow.
To fix this, we use ImmutableSetRef.
- Visit CFGBlocks in reverse postorder. This is a huge speedup, as on some test cases the algorithm would take many iterations
to converge.
This contains a bunch of copy-paste from UninitializedValues.cpp and ThreadSafety.cpp. The idea
was to get something working first, and then refactor the common logic for all three files into
a separate analysis/library entry point.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139968 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
0 files changed, 0 insertions, 0 deletions