aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2011-01-13 12:46:31 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2011-01-13 12:46:31 +0000
commite17da65c5773e0285b22e33d1431b13fbcd8942c (patch)
treed848eb704a8997d98c3f3e18fd0a157231618b96
parentd074441e027471a914cbb909a7aad1d43224950f (diff)
CXXBaseObjectRegion is like FieldRegion. Need to blast through it when
getting the base region. This makes the RemoveDeadBindings() correct. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123375 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/StaticAnalyzer/MemRegion.cpp1
-rw-r--r--test/Analysis/base-init.cpp2
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/StaticAnalyzer/MemRegion.cpp b/lib/StaticAnalyzer/MemRegion.cpp
index e465224f42..d3d72b51a7 100644
--- a/lib/StaticAnalyzer/MemRegion.cpp
+++ b/lib/StaticAnalyzer/MemRegion.cpp
@@ -770,6 +770,7 @@ const MemRegion *MemRegion::getBaseRegion() const {
case MemRegion::ElementRegionKind:
case MemRegion::FieldRegionKind:
case MemRegion::ObjCIvarRegionKind:
+ case MemRegion::CXXBaseObjectRegionKind:
R = cast<SubRegion>(R)->getSuperRegion();
continue;
default:
diff --git a/test/Analysis/base-init.cpp b/test/Analysis/base-init.cpp
index e82f443ced..800763b25b 100644
--- a/test/Analysis/base-init.cpp
+++ b/test/Analysis/base-init.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -analyzer-store region -analyzer-inline-call -cfg-add-initializers -verify -analyzer-no-purge-dead %s
+// RUN: %clang_cc1 -analyze -analyzer-check-objc-mem -analyzer-store region -analyzer-inline-call -cfg-add-initializers -verify %s
class A {
int x;