summaryrefslogtreecommitdiffstats
path: root/clang/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
commit48d164517930d5b2e300547898f59060e932af57 (patch)
treebbf7cd8ae85fbdefb9d393d54923142d7e30f60e /clang/lib/Analysis/ExplodedGraph.cpp
parent617e89231d3b43cebb2f88639dc87f65f14d02f5 (diff)
downloadbcm5719-llvm-48d164517930d5b2e300547898f59060e932af57.tar.gz
bcm5719-llvm-48d164517930d5b2e300547898f59060e932af57.zip
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. llvm-svn: 64881
Diffstat (limited to 'clang/lib/Analysis/ExplodedGraph.cpp')
-rw-r--r--clang/lib/Analysis/ExplodedGraph.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Analysis/ExplodedGraph.cpp b/clang/lib/Analysis/ExplodedGraph.cpp
index 864a83b8847..fe9cecadf3d 100644
--- a/clang/lib/Analysis/ExplodedGraph.cpp
+++ b/clang/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);
OpenPOWER on IntegriCloud