<div dir="ltr">Hi, <div><br></div><div>Justin is making nice commits for llvm-cov, so I thought we may continue this discussion now. </div><div>The quick-and-dirty implementation of coverage (in asan) is getting some early users and they seem to be happy.</div>


<div>AsanCoverage allows to collect per-function or per-basic-block coverage (booleans only, no counters) at a very low cost:</div><div>1% for per-function and 20% for per-basic-block: <a href="https://code.google.com/p/address-sanitizer/wiki/AsanCoverage" target="_blank">https://code.google.com/p/address-sanitizer/wiki/AsanCoverage</a> </div>


<div>The output format is very simple and does not require any external tool (other than 56 lines in python) to handle it.</div><div>So, I was wondering it some similar functionality could be included as part of llvm-cov effort. </div>


<div>Also, do you have some documentation about the llvm-cov (how it works, what is the performance, etc)?</div><div><br></div><div>BTW, would a 5-minute lightning talk about AsanCoverage be interesting at LLVM Euro 2014?</div>

<div><br></div><div>Thanks, </div><div><br></div><div>--kcc </div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Nov 14, 2013 at 5:42 PM, Kostya Serebryany <span dir="ltr"><<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div dir="ltr">Bob, Justin,<div><br></div><div>I've just committed a poor man's coverage implementation that works with asan. </div><div><a href="http://llvm.org/viewvc/llvm-project?rev=194701&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=194701&view=rev</a><br>



</div><div><a href="http://llvm.org/viewvc/llvm-project?rev=194702&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=194702&view=rev</a><br></div><div>It provides only function-level boolean coverage (i.e. no counters, just "visited or not"),</div>



<div>but is very fast and very simple (no extra sections to the binary file, etc)</div><div>I've tried it for Chrome's content_shell (huge and heavy binary) and the overhead </div><div>is negligible at both run-time and shutdown-time.</div>



<div><br></div><div>We'll be evaluating this implementation and collecting usage stats.</div><div>Maybe we want to implement something simple like this in the Clang coverage.</div><div><br></div><div>--kcc </div></div>



</blockquote></div><br></div></div>