diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-07-03 22:55:57 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-07-03 22:55:57 +0000 |
commit | fdaa33818cf9bad8d092136e73bd2e489cb821ba (patch) | |
tree | d2124dc5e73ae1f7efb84dde2c3e8a535a8c1742 /lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp | |
parent | 3b5f9dc024232fe3bde347f6b52155ff7f55a232 (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.cpp | 1 |
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: |