aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/ExplodedGraph.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-02-18 03:48:14 +0000
committerTed Kremenek <kremenek@apple.com>2009-02-18 03:48:14 +0000
commitfe9e543a2a363df7fcaa899367d3b2580b63b27c (patch)
treed6a9cc6935655adbccddcac142da70264be5706e /lib/Analysis/ExplodedGraph.cpp
parent3e030b4c04546229c81449fde66f71b23b3fc550 (diff)
Hooked up the necessary machinery to allow the retain/release checker reference
back to the summary used when evaluating the statement associated with a simulation node. This is now being used to help improve the checker's diagnostics. To get things started, the checker now emits a path diagnostic indicating that 'autorelease' is a no-op in GC mode. Some of these changes are exposing further grossness in the interface between BugReporter and the ExplodedGraph::Trim facilities. These really need to be cleaned up one day. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64881 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/ExplodedGraph.cpp')
-rw-r--r--lib/Analysis/ExplodedGraph.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Analysis/ExplodedGraph.cpp b/lib/Analysis/ExplodedGraph.cpp
index 864a83b884..fe9cecadf3 100644
--- a/lib/Analysis/ExplodedGraph.cpp
+++ b/lib/Analysis/ExplodedGraph.cpp
@@ -123,7 +123,9 @@ ExplodedNodeImpl::NodeGroup::~NodeGroup() {
ExplodedGraphImpl*
ExplodedGraphImpl::Trim(const ExplodedNodeImpl* const* BeginSources,
const ExplodedNodeImpl* const* EndSources,
- InterExplodedGraphMapImpl* M) const {
+ InterExplodedGraphMapImpl* M,
+ llvm::DenseMap<const void*, const void*> *InverseMap)
+const {
typedef llvm::DenseMap<const ExplodedNodeImpl*,
const ExplodedNodeImpl*> Pass1Ty;
@@ -249,6 +251,7 @@ ExplodedGraphImpl::Trim(const ExplodedNodeImpl* const* BeginSources,
ExplodedNodeImpl* NewN = G->getNodeImpl(N->getLocation(), N->State, NULL);
Pass2[N] = NewN;
+ if (InverseMap) (*InverseMap)[NewN] = N;
if (N->Preds.empty())
G->addRoot(NewN);