Set the 'cached digest' flag after computing the digest for an
authorTed Kremenek <kremenek@apple.com>
Thu, 3 Sep 2009 04:21:34 +0000 (04:21 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 3 Sep 2009 04:21:34 +0000 (04:21 +0000)
ImutAVLTree.  This was accidentally left out, and essentially caused
digest caching to be ignored in ImmutableMap and ImmutableSet (this
bug was detected from shark traces that showed ComputeDigest was in
the hot path in the clang static analyzer).

This reduces the running time of the clang static analyzer on an
example benchmark by ~32% for both RegionStore (field-sensitivty) and
BasicStore (without field-sensitivity).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80877 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ImmutableSet.h

index 7c070d7a7f25f1cb6f8ff66f226cbcd5f48c073e..70fc1a691454e9f05b4ea81a28a5b9c0c0fb652e 100644 (file)
@@ -331,6 +331,7 @@ private:
 
     uint32_t X = ComputeDigest(getLeft(), getRight(), getValue());
     Digest = X;
+    MarkedCachedDigest();
     return X;
   }
 };