[analyzer] Report leaks at the closing brace of a function body.
authorJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 19:11:43 +0000 (19:11 +0000)
committerJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 19:11:43 +0000 (19:11 +0000)
commite37ab50a6ea6e5f6e8de81bcdd3381a882d5903b
tree4779386d961e8e1fef0bc5b63b2058326b9017ef
parentb9263cf1129973f5cc94c91016dbb415d22870e7
[analyzer] Report leaks at the closing brace of a function body.

This fixes a few cases where we'd emit path notes like this:

  +---+
 1|   v
  p = malloc(len);
  ^   |2
  +---+

In general this should make path notes more consistent and more correct,
especially in cases where the leak happens on the false branch of an if
that jumps directly to the end of the function. There are a couple places
where the leak is reported farther away from the cause; these are usually
cases where there are several levels of nested braces before the end of
the function. This still matches our current behavior for when there /is/
a statement after all the braces, though.

llvm-svn: 168070
14 files changed:
clang/lib/StaticAnalyzer/Core/BugReporter.cpp
clang/lib/StaticAnalyzer/Core/ExprEngineCallAndReturn.cpp
clang/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
clang/test/Analysis/coverage.c
clang/test/Analysis/keychainAPI.m
clang/test/Analysis/malloc-annotations.c
clang/test/Analysis/malloc-interprocedural.c
clang/test/Analysis/malloc-plist.c
clang/test/Analysis/malloc.c
clang/test/Analysis/malloc.cpp
clang/test/Analysis/plist-output-alternate.m
clang/test/Analysis/retain-release.m
clang/test/Analysis/simple-stream-checks.c
clang/test/Analysis/stackaddrleak.c