]> granicus.if.org Git - clang/commit
Rework ExprEngine::evalLoad and clients (e.g. VisitBinaryOperator) so that when we...
authorTed Kremenek <kremenek@apple.com>
Fri, 6 Apr 2012 22:10:18 +0000 (22:10 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 6 Apr 2012 22:10:18 +0000 (22:10 +0000)
commitbd613137499b1d4c3b63dccd0aa21f6add243f4f
treedcdae129e5d102c0bb9e98abba82d7a988989c38
parentd2953ce57a4f1b0a6884b3d6b35266ab4f79fa7f
Rework ExprEngine::evalLoad and clients (e.g. VisitBinaryOperator) so that when we generate a new ExplodedNode
we use the same Expr* as the one being currently visited.  This is preparation for transitioning to having
ProgramPoints refer to CFGStmts.

This required a bit of trickery.  We wish to keep the old Expr* bindings in the Environment intact,
as plenty of logic relies on it and there is no reason to change it, but we sometimes want the Stmt* for
the ProgramPoint to be different than the Expr* being used for bindings.  This requires adding an extra
argument for some functions (e.g., evalLocation).  This looks a bit strange for some clients, but
it will look a lot cleaner when were start using CFGStmt* in the appropriate places.

As some fallout, the diagnostics arrows are a bit difference, since some of the node locations have changed.
I have audited these, and they look reasonable.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154214 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/CheckerManager.h
include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp
lib/StaticAnalyzer/Core/CheckerManager.cpp
lib/StaticAnalyzer/Core/ExprEngine.cpp
lib/StaticAnalyzer/Core/ExprEngineC.cpp
lib/StaticAnalyzer/Core/ExprEngineObjC.cpp
test/Analysis/inline-plist.c
test/Analysis/inline-unique-reports.c
test/Analysis/plist-output-alternate.m
test/Analysis/plist-output.m