summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2013-11-20 00:11:42 +0000
committerAnna Zaks <ganna@apple.com>2013-11-20 00:11:42 +0000
commitd2a807d8317c4782aafd9186852e9b7eed76a111 (patch)
tree057ec750a95d586071ac3f3b47f6a8f1abf5d435 /clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
parent0d3f7eca8e552621c61658a5f895e2716d5c0e74 (diff)
downloadbcm5719-llvm-d2a807d8317c4782aafd9186852e9b7eed76a111.tar.gz
bcm5719-llvm-d2a807d8317c4782aafd9186852e9b7eed76a111.zip
[analyzer] Fix an infinite recursion in region invalidation by adding block count to the BlockDataRegion.
llvm-svn: 195174
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/SValBuilder.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Core/SValBuilder.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
index 2142f06fef5..adc54659911 100644
--- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp
@@ -202,10 +202,12 @@ DefinedSVal SValBuilder::getFunctionPointer(const FunctionDecl *func) {
DefinedSVal SValBuilder::getBlockPointer(const BlockDecl *block,
CanQualType locTy,
- const LocationContext *locContext) {
+ const LocationContext *locContext,
+ unsigned blockCount) {
const BlockTextRegion *BC =
MemMgr.getBlockTextRegion(block, locTy, locContext->getAnalysisDeclContext());
- const BlockDataRegion *BD = MemMgr.getBlockDataRegion(BC, locContext);
+ const BlockDataRegion *BD = MemMgr.getBlockDataRegion(BC, locContext,
+ blockCount);
return loc::MemRegionVal(BD);
}
OpenPOWER on IntegriCloud