aboutsummaryrefslogtreecommitdiff
path: root/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-07-03 22:55:57 +0000
committerJordan Rose <jordan_rose@apple.com>2012-07-03 22:55:57 +0000
commitfdaa33818cf9bad8d092136e73bd2e489cb821ba (patch)
treed2124dc5e73ae1f7efb84dde2c3e8a535a8c1742 /lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
parent3b5f9dc024232fe3bde347f6b52155ff7f55a232 (diff)
[analyzer] For now, don't inline non-static member overloaded operators.
Our current inlining support (specifically RegionStore::enterStackFrame) doesn't know that calls to overloaded operators may be calls to non-static member functions, and that in these cases the first argument should be treated as 'this'. This caused incorrect results and sometimes crashes. The long-term fix will be to rewrite RegionStore::enterStackFrame to use CallEvent and its subclasses, but for now we can just disable these problematic calls by classifying them under a new CallEvent, CXXMemberOperatorCall. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159692 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp')
-rw-r--r--lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
index 5940131a5b..d0618d0ddd 100644
--- a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
+++ b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
@@ -945,6 +945,7 @@ RetainSummaryManager::getSummary(const CallEvent &Call,
Summ = getFunctionSummary(cast<FunctionCall>(Call).getDecl());
break;
case CE_CXXMember:
+ case CE_CXXMemberOperator:
case CE_Block:
case CE_CXXConstructor:
case CE_CXXAllocator: