diff options
| author | George Karpenkov <ekarpenkov@apple.com> | 2018-09-15 02:01:26 +0000 |
|---|---|---|
| committer | George Karpenkov <ekarpenkov@apple.com> | 2018-09-15 02:01:26 +0000 |
| commit | 40cbde9ce28af51a8a1124d3a6f6b1477a6efce8 (patch) | |
| tree | e2045a834cf6a0e61f4f470882a4a5210704bd6e /clang | |
| parent | ac9f7fb9a1c6508949aa57e88fe3a73ab4c4b645 (diff) | |
| download | bcm5719-llvm-40cbde9ce28af51a8a1124d3a6f6b1477a6efce8.tar.gz bcm5719-llvm-40cbde9ce28af51a8a1124d3a6f6b1477a6efce8.zip | |
[analyzer] Skip printing duplicate nodes, even if nodes have multiple predecessors/successors
Still generate a node, but leave the redundant field empty.
Differential Revision: https://reviews.llvm.org/D51821
llvm-svn: 342308
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Core/ExprEngine.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp index 638fc5de10f..a1fcd121311 100644 --- a/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp @@ -3177,7 +3177,12 @@ struct DOTGraphTraits<ExplodedNode*> : public DefaultDOTGraphTraits { << ")" << " NodeID: " << N->getID(&Graph) << " (" << (const void *)N << ")\\|"; - State->printDOT(Out, N->getLocationContext()); + bool SameAsAllPredecessors = + std::all_of(N->pred_begin(), N->pred_end(), [&](const ExplodedNode *P) { + return P->getState() == State; + }); + if (!SameAsAllPredecessors) + State->printDOT(Out, N->getLocationContext()); return Out.str(); } }; |

