diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-02-12 18:50:03 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-02-12 18:50:03 +0000 |
commit | 020c374273ab6099acbed747a7f27aebf8f0af1d (patch) | |
tree | 06da2d317b4a825e3d237eacea75713bb967a47f /lib | |
parent | 0895d1513772eca5a20c552976209fd7f58b993f (diff) |
Teach the IdempotentOperations checker to ignore property setters.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125443 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp b/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp index 633648ec6c..7f64f8e2c4 100644 --- a/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/IdempotentOperationChecker.cpp @@ -357,8 +357,15 @@ void IdempotentOperationChecker::PostVisitBinaryOperator( const BinaryOperator *B) { // Add the ExplodedNode we just visited BinaryOperatorData &Data = hash[B]; - assert(isa<BinaryOperator>(cast<StmtPoint>(C.getPredecessor() - ->getLocation()).getStmt())); + + const Stmt *predStmt + = cast<StmtPoint>(C.getPredecessor()->getLocation()).getStmt(); + + // Ignore implicit calls to setters. + if (isa<ObjCPropertyRefExpr>(predStmt)) + return; + + assert(isa<BinaryOperator>(predStmt)); Data.explodedNodes.Add(C.getPredecessor()); } |