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 | 459597a6eb8a48d65e4613825023fecfa6656720 (patch) | |
tree | 698f35210a7e3630331e8616c44b75fdad0f52d4 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 502848cedadf8d503fa14b67340cf3dd1a7545d1 (diff) | |
download | llvm-459597a6eb8a48d65e4613825023fecfa6656720.zip llvm-459597a6eb8a48d65e4613825023fecfa6656720.tar.gz llvm-459597a6eb8a48d65e4613825023fecfa6656720.tar.bz2 |
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.
llvm-svn: 139968
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions