[cfe-commits] r48031 - /cfe/trunk/Analysis/GRExprEngine.cpp

Ted Kremenek kremenek at apple.com
Fri Mar 7 12:57:33 PST 2008


Author: kremenek
Date: Fri Mar  7 14:57:30 2008
New Revision: 48031

URL: http://llvm.org/viewvc/llvm-project?rev=48031&view=rev
Log:
Improved graph visualization of ExplodedGraphs to include source line and column
information.

Modified:
    cfe/trunk/Analysis/GRExprEngine.cpp

Modified: cfe/trunk/Analysis/GRExprEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Analysis/GRExprEngine.cpp?rev=48031&r1=48030&r2=48031&view=diff

==============================================================================
--- cfe/trunk/Analysis/GRExprEngine.cpp (original)
+++ cfe/trunk/Analysis/GRExprEngine.cpp Fri Mar  7 14:57:30 2008
@@ -14,6 +14,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "clang/Analysis/PathSensitive/GRExprEngine.h"
+#include "clang/Basic/SourceManager.h"
 #include "llvm/Support/Streams.h"
 
 #ifndef NDEBUG
@@ -1563,6 +1564,7 @@
 
 #ifndef NDEBUG
 static GRExprEngine* GraphPrintCheckerState;
+static SourceManager* GraphPrintSourceManager;
 
 namespace llvm {
 template<>
@@ -1702,11 +1704,16 @@
         break;
         
       case ProgramPoint::PostStmtKind: {
-        const PostStmt& L = cast<PostStmt>(Loc);
-        Out << L.getStmt()->getStmtClassName() << ':' 
-            << (void*) L.getStmt() << ' ';
-        
-        L.getStmt()->printPretty(Out);
+        const PostStmt& L = cast<PostStmt>(Loc);        
+        Stmt* S = L.getStmt();
+        SourceLocation SLoc = S->getLocStart();
+
+        Out << S->getStmtClassName() << ' ' << (void*) S << ' ';        
+        S->printPretty(Out);
+        
+        Out << "\\lline="
+          << GraphPrintSourceManager->getLineNumber(SLoc) << " col="
+          << GraphPrintSourceManager->getColumnNumber(SLoc) << "\\l";
         
         if (GraphPrintCheckerState->isImplicitNullDeref(N))
           Out << "\\|Implicit-Null Dereference.\\l";
@@ -1738,9 +1745,17 @@
             << E.getDst()->getBlockID()  << ')';
         
         if (Stmt* T = E.getSrc()->getTerminator()) {
+          
+          SourceLocation SLoc = T->getLocStart();
+         
           Out << "\\|Terminator: ";
+          
           E.getSrc()->printTerminator(Out);
           
+          Out << "\\lline="
+            << GraphPrintSourceManager->getLineNumber(SLoc) << " col="
+            << GraphPrintSourceManager->getColumnNumber(SLoc);
+            
           if (isa<SwitchStmt>(T)) {
             Stmt* Label = E.getDst()->getLabel();
             
@@ -1798,7 +1813,9 @@
 void GRExprEngine::ViewGraph() {
 #ifndef NDEBUG
   GraphPrintCheckerState = this;
+  GraphPrintSourceManager = &getContext().getSourceManager();
   llvm::ViewGraph(*G.roots_begin(), "GRExprEngine");
   GraphPrintCheckerState = NULL;
+  GraphPrintSourceManager = NULL;
 #endif
 }





More information about the cfe-commits mailing list