]> granicus.if.org Git - clang/commitdiff
Make MallocChecker debug output useful.
authorTed Kremenek <kremenek@apple.com>
Thu, 3 Jan 2013 01:30:12 +0000 (01:30 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 3 Jan 2013 01:30:12 +0000 (01:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171439 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Checkers/MallocChecker.cpp

index af902a009638bf22a97ada463d687b3ad7b0c0bc..cfbcc53c17d033794873337ec7e79aacc10ec470 100644 (file)
@@ -70,6 +70,19 @@ public:
     ID.AddInteger(K);
     ID.AddPointer(S);
   }
+
+  void dump(llvm::raw_ostream &OS) const {
+    static const char *Table[] = {
+      "Allocated",
+      "Released",
+      "Relinquished"
+    };
+    OS << Table[(unsigned) K];
+  }
+
+  LLVM_ATTRIBUTE_USED void dump() const {
+    dump(llvm::errs());
+  }
 };
 
 enum ReallocPairKind {
@@ -1561,8 +1574,15 @@ void MallocChecker::printState(raw_ostream &Out, ProgramStateRef State,
 
   RegionStateTy RS = State->get<RegionState>();
 
-  if (!RS.isEmpty())
-    Out << "Has Malloc data" << NL;
+  if (!RS.isEmpty()) {
+    Out << Sep << "MallocChecker:" << NL;
+    for (RegionStateTy::iterator I = RS.begin(), E = RS.end(); I != E; ++I) {
+      I.getKey()->dumpToStream(Out);
+      Out << " : ";
+      I.getData().dump(Out);
+      Out << NL;
+    }
+  }
 }
 
 #define REGISTER_CHECKER(name) \