[analyzer] Make sure calls in synthesized functions have valid path locations.
authorJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 02:07:23 +0000 (02:07 +0000)
committerJordan Rose <jordan_rose@apple.com>
Thu, 15 Nov 2012 02:07:23 +0000 (02:07 +0000)
commit2d98b97e1077889f16ef1be5b3c0d801a1f7345e
treee9806ea6e46ca46b2b231c0b60804aa3881f8aff
parente0b23b5198baa1499edaf0209c164e81007c4dfe
[analyzer] Make sure calls in synthesized functions have valid path locations.

We do this by using the "most recent" good location: if a synthesized
function 'A' calls another function 'B', the path notes for the call to 'B'
will be placed at the same location as the path note for calling 'A'.

Similarly, the call to 'A' will have a note saying "Entered call from...",
and now we just don't emit that (since the user doesn't have a body to look
at anyway).

Previously, we were doing this for the "Calling..." notes, but not for the
"Entered call from..." or "Returning to caller". This caused a crash when
the path entered and then exiting a call within a synthesized body.

<rdar://problem/12657843>

llvm-svn: 168019
clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
clang/lib/StaticAnalyzer/Core/BugReporter.cpp
clang/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
clang/test/Analysis/inlining/path-notes.m
clang/test/Analysis/unix-fns.c