summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-06-16 01:28:00 +0000
committerJordan Rose <jordan_rose@apple.com>2012-06-16 01:28:00 +0000
commite42412be3948446c0c9db75a83ddcc1f1ab3bc6a (patch)
treeec5822fc109223f381d334fea7f0f55acab01369 /clang/lib/StaticAnalyzer
parent144a2ac89d0eb4938ea7ac388c9e70ff68977eb6 (diff)
downloadbcm5719-llvm-e42412be3948446c0c9db75a83ddcc1f1ab3bc6a.tar.gz
bcm5719-llvm-e42412be3948446c0c9db75a83ddcc1f1ab3bc6a.zip
[analyzer] Return an UnknownVal when we try to get the binding for a VLA.
This happens in C++ mode right at the declaration of a struct VLA; MallocChecker sees a bind and tries to get see if it's an escaping bind. It's likely that our handling of this is still incomplete, but it fixes a crash on valid without disturbing anything else for now. llvm-svn: 158587
Diffstat (limited to 'clang/lib/StaticAnalyzer')
-rw-r--r--clang/lib/StaticAnalyzer/Core/RegionStore.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/RegionStore.cpp b/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
index 9c00d963432..7f6aa9f935a 100644
--- a/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
@@ -1055,8 +1055,12 @@ SVal RegionStoreManager::getBinding(Store store, Loc L, QualType T) {
if (RTy->isUnionType())
return UnknownVal();
- if (RTy->isArrayType())
- return getBindingForArray(store, R);
+ if (RTy->isArrayType()) {
+ if (RTy->isConstantArrayType())
+ return getBindingForArray(store, R);
+ else
+ return UnknownVal();
+ }
// FIXME: handle Vector types.
if (RTy->isVectorType())
OpenPOWER on IntegriCloud