summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-01-13 00:56:48 +0000
committerAnna Zaks <ganna@apple.com>2012-01-13 00:56:48 +0000
commit622813009955259a084a1fc3f0816c00d89cf12d (patch)
treedbd317d4fc0e830674c59a5365136221388b80f3 /clang/lib/StaticAnalyzer/Core
parentbdf42b336d9df44c51a1377c585730e46fbc0e5c (diff)
downloadbcm5719-llvm-622813009955259a084a1fc3f0816c00d89cf12d.tar.gz
bcm5719-llvm-622813009955259a084a1fc3f0816c00d89cf12d.zip
[analyzer] RegionStoreManager::getBinding() should not crash when
looking up value at a CodeTextRegion even when the type is not provided. llvm-svn: 148079
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core')
-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 5bd7d726750..f27c51880be 100644
--- a/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RegionStore.cpp
@@ -918,8 +918,12 @@ SVal RegionStoreManager::getBinding(Store store, Loc L, QualType T) {
isa<SymbolicRegion>(MR) ||
isa<CodeTextRegion>(MR)) {
if (T.isNull()) {
- const SymbolicRegion *SR = cast<SymbolicRegion>(MR);
- T = SR->getSymbol()->getType(Ctx);
+ if (const TypedRegion *TR = dyn_cast<TypedRegion>(MR))
+ T = TR->getLocationType();
+ else {
+ const SymbolicRegion *SR = cast<SymbolicRegion>(MR);
+ T = SR->getSymbol()->getType(Ctx);
+ }
}
MR = GetElementZeroRegion(MR, T);
}
OpenPOWER on IntegriCloud