<div dir="ltr">(+ a few folks who've been involved in the reviews, etc)<br><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 24, 2018 at 12:34 PM Calixte Denizet via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div><br></div><div>When making code coverage, there are some counters on closing braces.</div><div>In some case it's due to "return void" with a debugloc corresponding to '}' (see line 4) or due to cleanup stuff put at the end of a scope (see line 20, aaa's dtor is called).</div><div>Especially with c++, some "implicit" code (i.e. not written explicitly by the user) could be added at the beginning of a scope and at the end.<br></div><div>Here are two example of outputs produced by clang and gcc.</div><div><br></div><div>With clang 7:<br>-: 1:struct A {<br>-: 2:<br>1: 3: A() {}<br>-: 4: <br>-: 5: ~A() {<br>1: 6: }<br>-: 7:};<br>-: 8:<br>-: 9:void foo(int K) {<br>1: 10:}<br>-: 11:<br>-: 12:int main() {<br>1: 13: A aaa;<br>1: 14: int x = 1;<br>1: 15: foo(x);<br>1: 16: x = x + 2;<br>-: 17:<br>1: 18: return x;<br>1: 19:}<br></div><br><div>With gcc 8:<br>-: 1:struct A {<br>-: 2:<br>1: 3: A() {}<br>-: 4: <br>1: 5: ~A() {<br>1: 6: }<br>-: 7:};<br>-: 8:<br>1: 9:void foo(int K) {<br>1: 10:}<br>-: 11:<br>1: 12:int main() {<br>1: 13: A aaa;<br>1: 14: int x = 1;<br>1: 15: foo(x);<br>1: 16: x = x + 2;<br>-: 17:<br>1: 18: return x;<br>-: 19:}</div><div><br></div><div>So I'd like to have coverage for lines which contain only "explicit" code to have a clear information to give to different kinds of people (I spent myself some time to understand why I had coverage on line like "} // namespace foo").</div><div>So we could add an option in clang (no idea of the name right now) to allow user to have coverage for explicit code.</div><div>And so have this output:<br>-: 1:struct A {<br>-: 2:<br>1: 3: A() {}<br>-: 4: <br>1: 5: ~A() {<br>-: 6: }<br>-: 7:};<br>-: 8:<br>1: 9:void foo(int K) {<br>-: 10:}<br>-: 11:<br>1: 12:int main() {<br>1: 13: A aaa;<br>1: 14: int x = 1;<br>1: 15: foo(x);<br>1: 16: x = x + 2;<br>-: 17:<br>1: 18: return x;<br>-: 19:}<br></div><div><br></div><div>Calixte<br></div></div></div></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>