<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I'm not sure this is a good idea. For the first stack frame, things that happen before the first event are (supposedly) unrelated to problem that occurs. For inlined functions, this isn't necessarily true—if the first thing the top-level function does is call the inlined function, then sure, but if there have already been events in the top-level function, not showing any arrows seems like we're pretending the intermediate code didn't happen.</div><div><br></div><div>To put it another way, I'm fine with chopping stuff off the beginning of the bug report, but a little antsy about removing stuff from the middle. But maybe I'm being silly, since we remove unimportant <i>events</i> from the middle already, including entire call stacks.</div><div><br></div><div>Jordan</div><div><br></div><br><div><div>On May 16, 2013, at 23:48 , Ted Kremenek <<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Author: kremenek<br>Date: Fri May 17 01:48:22 2013<br>New Revision: 182078<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=182078&view=rev">http://llvm.org/viewvc/llvm-project?rev=182078&view=rev</a><br>Log:<br>[analyzer; alternate edges] don't add an edge incoming from the start of a function<br>for a nested call.  This matches what we do with the first stack frame.<br><br>Modified:<br>    cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp<br><br>Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=182078&r1=182077&r2=182078&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=182078&r1=182077&r2=182078&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)<br>+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Fri May 17 01:48:22 2013<br>@@ -1594,14 +1594,6 @@ GenerateAlternateExtensivePathDiagnostic<br>       // call exit before this point.  This means that the path<br>       // terminated within the call itself.<br>       if (Optional<CallEnter> CE = P.getAs<CallEnter>()) {<br>-        // Add an edge to the start of the function.<br>-        const StackFrameContext *CalleeLC = CE->getCalleeContext();<br>-        PathDiagnosticLocation &PrevLocCallee = PrevLocMap[CalleeLC];<br>-        const Decl *D = CalleeLC->getDecl();<br>-        addEdgeToPath(PD.getActivePath(), PrevLocCallee,<br>-                      PathDiagnosticLocation::createBegin(D, SM),<br>-                      CalleeLC);<br>-<br>         // Did we visit an entire call?<br>         bool VisitedEntireCall = PD.isWithinCall();<br>         PD.popActivePath();<br><br><br>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits<br></blockquote></div><br></body></html>