]> granicus.if.org Git - clang/commit
[analyzer] Mark symbol values as dead in the environment.
authorJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 19:11:27 +0000 (19:11 +0000)
committerJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 19:11:27 +0000 (19:11 +0000)
commit84c484545c5906ba55143e212b4a5275ab55889f
tree497cdfa32650b81a2db739e4f8a0b138324bf133
parent3d145f660a23d5bdabdd1ead83c51f3df1489b09
[analyzer] Mark symbol values as dead in the environment.

This allows us to properly remove dead bindings at the end of the top-level
stack frame, using the ReturnStmt, if there is one, to keep the return value
live. This in turn removes the need for a check::EndPath callback in leak
checkers.

This does cause some changes in the path notes for leak checkers. Previously,
a leak would be reported at the location of the closing brace in a function.
Now, it gets reported at the last statement. This matches the way leaks are
currently reported for inlined functions, but is less than ideal for both.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168066 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h
lib/StaticAnalyzer/Core/Environment.cpp
lib/StaticAnalyzer/Core/ExprEngine.cpp
lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
test/Analysis/malloc-plist.c
test/Analysis/malloc.c
test/Analysis/plist-output-alternate.m