Expanded graph visualization interface to include specifying a range of

nodes to use a trim sources.

llvm-svn: 48236
This commit is contained in:
Ted Kremenek 2008-03-11 18:25:33 +00:00
parent 0b844f053f
commit a7178c7429
2 changed files with 27 additions and 14 deletions

View File

@ -1815,16 +1815,31 @@ static void AddSources(llvm::SmallVector<GRExprEngine::NodeTy*, 10>& Sources,
void GRExprEngine::ViewGraph(bool trim) { void GRExprEngine::ViewGraph(bool trim) {
#ifndef NDEBUG #ifndef NDEBUG
GraphPrintCheckerState = this;
GraphPrintSourceManager = &getContext().getSourceManager();
if (trim) { if (trim) {
llvm::SmallVector<NodeTy*, 10> Sources; llvm::SmallVector<NodeTy*, 10> Sources;
AddSources(Sources, null_derefs_begin(), null_derefs_end()); AddSources(Sources, null_derefs_begin(), null_derefs_end());
AddSources(Sources, undef_derefs_begin(), undef_derefs_end()); AddSources(Sources, undef_derefs_begin(), undef_derefs_end());
GRExprEngine::GraphTy* TrimmedG = G.Trim(&Sources[0], ViewGraph(&Sources[0], &Sources[0]+Sources.size());
&Sources[0]+Sources.size()); }
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) if (!TrimmedG)
llvm::cerr << "warning: Trimmed ExplodedGraph is empty.\n"; llvm::cerr << "warning: Trimmed ExplodedGraph is empty.\n";
@ -1832,10 +1847,6 @@ void GRExprEngine::ViewGraph(bool trim) {
llvm::ViewGraph(*TrimmedG->roots_begin(), "TrimmedGRExprEngine"); llvm::ViewGraph(*TrimmedG->roots_begin(), "TrimmedGRExprEngine");
delete TrimmedG; delete TrimmedG;
} }
}
else
llvm::ViewGraph(*G.roots_begin(), "GRExprEngine");
GraphPrintCheckerState = NULL; GraphPrintCheckerState = NULL;
GraphPrintSourceManager = NULL; GraphPrintSourceManager = NULL;

View File

@ -153,6 +153,8 @@ public:
/// simulation. /// simulation.
void ViewGraph(bool trim = false); void ViewGraph(bool trim = false);
void ViewGraph(NodeTy** Beg, NodeTy** End);
/// getInitialState - Return the initial state used for the root vertex /// getInitialState - Return the initial state used for the root vertex
/// in the ExplodedGraph. /// in the ExplodedGraph.
ValueState* getInitialState(); ValueState* getInitialState();