]> granicus.if.org Git - clang/commitdiff
[analyzer] Refactoring + explanatory comment.
authorAnton Yartsev <anton.yartsev@gmail.com>
Wed, 24 Apr 2013 10:24:38 +0000 (10:24 +0000)
committerAnton Yartsev <anton.yartsev@gmail.com>
Wed, 24 Apr 2013 10:24:38 +0000 (10:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180181 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Core/RegionStore.cpp

index 20ee6bf6bedf447f67e0707214e670eb1cd69266..dbfd9d6c9907b2e12f925fe50107754407463cff 100644 (file)
@@ -1011,6 +1011,7 @@ void invalidateRegionsWorker::VisitCluster(const MemRegion *baseR,
     for (ClusterBindings::iterator I = C->begin(), E = C->end(); I != E; ++I)
       VisitBinding(I.getData());
 
+    // Invalidate the contents of a non-const base region.
     if (!IsConst)
       B = B.remove(baseR);
   }
@@ -1043,18 +1044,19 @@ void invalidateRegionsWorker::VisitCluster(const MemRegion *baseR,
   }
 
   // Symbolic region?
-  SymbolRef RegionSym = 0;
-  if (const SymbolicRegion *SR = dyn_cast<SymbolicRegion>(baseR))
-    RegionSym = SR->getSymbol();
+  if (const SymbolicRegion *SR = dyn_cast<SymbolicRegion>(baseR)) {
+    SymbolRef RegionSym = SR->getSymbol();
 
-  if (IsConst) {
     // Mark that symbol touched by the invalidation.
-    ConstIS.insert(RegionSym);
-    return;
+    if (IsConst)
+      ConstIS.insert(RegionSym);
+    else
+      IS.insert(RegionSym);
   }
-  
-  // Mark that symbol touched by the invalidation.
-  IS.insert(RegionSym);
+
+  // Nothing else should be done for a const region.
+  if (IsConst)
+    return;
 
   // Otherwise, we have a normal data region. Record that we touched the region.
   if (Regions)