]> granicus.if.org Git - clang/commitdiff
Expanded graph visualization interface to include specifying a range of
authorTed Kremenek <kremenek@apple.com>
Tue, 11 Mar 2008 18:25:33 +0000 (18:25 +0000)
committerTed Kremenek <kremenek@apple.com>
Tue, 11 Mar 2008 18:25:33 +0000 (18:25 +0000)
nodes to use a trim sources.

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

Analysis/GRExprEngine.cpp
include/clang/Analysis/PathSensitive/GRExprEngine.h

index 15fe88ec1c1bf8c4e5c0e1e1a8883caf60b20e77..6d1c03d537d5bbb18a32410339858697ef335a12 100644 (file)
@@ -1814,28 +1814,39 @@ static void AddSources(llvm::SmallVector<GRExprEngine::NodeTy*, 10>& Sources,
 #endif
 
 void GRExprEngine::ViewGraph(bool trim) {
-#ifndef NDEBUG
-  GraphPrintCheckerState = this;
-  GraphPrintSourceManager = &getContext().getSourceManager();
-  
+#ifndef NDEBUG  
   if (trim) {
     llvm::SmallVector<NodeTy*, 10> Sources;
     AddSources(Sources, null_derefs_begin(), null_derefs_end());
     AddSources(Sources, undef_derefs_begin(), undef_derefs_end());
     
-    GRExprEngine::GraphTy* TrimmedG = G.Trim(&Sources[0],
-                                             &Sources[0]+Sources.size());
-    
-    if (!TrimmedG)
-      llvm::cerr << "warning: Trimmed ExplodedGraph is empty.\n";
-    else {
-      llvm::ViewGraph(*TrimmedG->roots_begin(), "TrimmedGRExprEngine");    
-      delete TrimmedG;
-    }
+    ViewGraph(&Sources[0], &Sources[0]+Sources.size());
   }
-  else
+  else {
+    GraphPrintCheckerState = this;
+    GraphPrintSourceManager = &getContext().getSourceManager();
+
     llvm::ViewGraph(*G.roots_begin(), "GRExprEngine");
+    
+    GraphPrintCheckerState = NULL;
+    GraphPrintSourceManager = NULL;
+  }
+#endif
+}
+
+void GRExprEngine::ViewGraph(NodeTy** Beg, NodeTy** End) {
+#ifndef NDEBUG
+  GraphPrintCheckerState = this;
+  GraphPrintSourceManager = &getContext().getSourceManager();
   
+  GRExprEngine::GraphTy* TrimmedG = G.Trim(Beg, End);
+
+  if (!TrimmedG)
+    llvm::cerr << "warning: Trimmed ExplodedGraph is empty.\n";
+  else {
+    llvm::ViewGraph(*TrimmedG->roots_begin(), "TrimmedGRExprEngine");    
+    delete TrimmedG;
+  }  
   
   GraphPrintCheckerState = NULL;
   GraphPrintSourceManager = NULL;
index ad592b74771bc5dcd535c7a956650e354ef8d6dc..1a4c814a5ff7d8d048544db29e151f83644b4069 100644 (file)
@@ -153,6 +153,8 @@ public:
   ///  simulation.
   void ViewGraph(bool trim = false);
   
+  void ViewGraph(NodeTy** Beg, NodeTy** End);
+  
   /// getInitialState - Return the initial state used for the root vertex
   ///  in the ExplodedGraph.
   ValueState* getInitialState();