diff options
author | Anna Zaks <ganna@apple.com> | 2013-11-20 00:11:42 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2013-11-20 00:11:42 +0000 |
commit | d2a807d8317c4782aafd9186852e9b7eed76a111 (patch) | |
tree | 057ec750a95d586071ac3f3b47f6a8f1abf5d435 /clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | |
parent | 0d3f7eca8e552621c61658a5f895e2716d5c0e74 (diff) | |
download | bcm5719-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.cpp | 6 |
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); } |