<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, May 28, 2014 at 1:56 PM, Duncan P. N. Exon Smith <span dir="ltr"><<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">> On 2014-May-28, at 13:43, Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br>

><br>
> On Wed, May 28, 2014 at 1:06 PM, Alex L <<a href="mailto:arphaman@gmail.com">arphaman@gmail.com</a>> wrote:<br>
> Sure, We need to call CodeGenPGO::assignRegionCounters for all functions<br>
> because we want to emit counter variables for all functions in a translation unit, even if they aren't used.<br>
><br>
> Why do you want to emit counter variables for unused functions?<br>
<br>
</div>Coverage.  There's a difference between "no data" (this function wasn't<br>
instrumented) and "never called" (counter is zero).  This patch moves unused<br>
functions from the former category to the latter.<br>
</blockquote><div><br></div><div>Why do you need profiling data on inline functions that were never called?  You will only need profiling data if someone adds a call to the inline function, in which case the program changed, and the zeroed out counters won't be very helpful.  If some TU needed them, it will emit them.</div>
<div><br></div><div>Also, CodeGenerator::HandleInlineMethodDefinition() would be a better place for this code.  We recently added it for dllexport, which has basically the semantics you want.  If this ends up being the direction we want, we probably want to merge support for -femit-all-decls, pgo, and dllexport in the same place to control the linkage and MustBeEmitted-ness of inline functions.</div>
</div></div></div>