diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-09-02 06:03:18 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-09-02 06:03:18 +0000 |
commit | cf768cd20235585f485316ace72eb7254bcfcf54 (patch) | |
tree | b17d269f2a2264ae30dedbfa327239611e6b893b /clang/lib/Analysis/SymbolManager.cpp | |
parent | d5f4fcceae8e1e9229dbf83a324b49a9954f18bf (diff) | |
download | bcm5719-llvm-cf768cd20235585f485316ace72eb7254bcfcf54.tar.gz bcm5719-llvm-cf768cd20235585f485316ace72eb7254bcfcf54.zip |
Replace uses of ImmutableSet in SymbolReaper with DenseSet. This was
motivated from Shark profiles that shows that 'markLive' was very
heavy when using --analyzer-store=region. On my benchmark file, this
reduces the analysis time for --analyzer-store=region from 19.5s to
13.5s and for --analyzer-store=basic from 5.3s to 3.5s. For the
benchmark file, this is a reduction of about 30% analysis time for
both analysis modes (a huge win).
llvm-svn: 80765
Diffstat (limited to 'clang/lib/Analysis/SymbolManager.cpp')
-rw-r--r-- | clang/lib/Analysis/SymbolManager.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/Analysis/SymbolManager.cpp b/clang/lib/Analysis/SymbolManager.cpp index b94551e31f2..d2a82fd1fc9 100644 --- a/clang/lib/Analysis/SymbolManager.cpp +++ b/clang/lib/Analysis/SymbolManager.cpp @@ -191,20 +191,20 @@ bool SymbolManager::canSymbolicate(QualType T) { } void SymbolReaper::markLive(SymbolRef sym) { - TheLiving = F.Add(TheLiving, sym); - TheDead = F.Remove(TheDead, sym); + TheLiving.insert(sym); + TheDead.erase(sym); } bool SymbolReaper::maybeDead(SymbolRef sym) { if (isLive(sym)) return false; - TheDead = F.Add(TheDead, sym); + TheDead.insert(sym); return true; } bool SymbolReaper::isLive(SymbolRef sym) { - if (TheLiving.contains(sym)) + if (TheLiving.count(sym)) return true; if (const SymbolDerived *derived = dyn_cast<SymbolDerived>(sym)) { |