<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>Hi,<br></div>
<div> </div>
<div>Once, long ago, I started working on this checker callback, but forgot about it. I have decided to finish it now. Original discussion: <a href="http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20131216/095565.html">http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20131216/095565.html</a><br></div>
<div> </div>
<div>The motivation was (pipermail doesn't seem to have my original mail, for some reason):<br></div>
<div> </div>
<blockquote><div>I had an issue recently with the Static Analyzer [while implementing a checker] that I wouldn't be able
 to detect when a function was entered - either through a call or 
serving as the entry point of the analysis. (I ended up using 
checkPreStmt and figuring out if we've been magically transported inside
 a function body and check the program state whether the necessary info 
was already recorded by checkPreCall. Not something I'd call nice by any
 means.)<br></div>
</blockquote><div> </div>
<div>The attached patch creates a new checker hook, with the signature:<br></div>
<div> </div>
<blockquote><div>ProgramStateRef checkInitialState(const EntryPointInfo& EPInfo) /* non-const */;<br></div>
</blockquote><div> </div>
<div>EntryPointInfo is currently a very simple class containing a Decl* of the declaration being used as an entry point and a ProgramStateRef of the initial state.<br></div>
<div> </div>
<div>Checkers implementing this hook can make changes to the program state by returning a new one. They are also allowed to return nullptr, in which case the analysis doesn't proceed further from that entry point.<br></div>
<div> </div>
<div>Please let me know what you think!<br></div>
<div> </div>
<div id="sig30782065"><div class="signature">---<br></div>
<div class="signature">Best regards,<br></div>
<div class="signature"> </div>
<div class="signature">Gábor 'ShdNx' Kozár<br></div>
<div class="signature"><a href="http://gaborkozar.me">http://gaborkozar.me</a><br></div>
<div class="signature"> </div>
</div>
<div> </div>
</body>
</html>