<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5"><br>
><br>
>     These functions are left around by the inliner (it doesn't know that<br>
>     they're safe to delete). Deleting them reduces code size and simplifies<br>
>     subsequent analysis of profile counters.<br>
<br>
</div></div>I think that this is something global-DCE should be teached about (if it does not know already).<br>
<span class=""><br></span></blockquote><div>What attribute do you think we could use to do that?<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
>  4. Emit the aliases into a new section in the binary.<br>
><br>
>     Aliases are represented as { Dst: i64*, Src: i64* } tuples. Some changes<br>
>     in compiler-rt are required to walk the alias section and fill in the<br>
>     correct execution counts at program exit time.<br>
><br>
> This pass needs to be run after the inliner in order to be effective.<br>
><br>
> The complexity of this pass is O(N*M), where N is the number of profile<br>
> counters, and M is the average number of updates per counter.<br>
<br>
</span>What you're describing here is not clear to me? But I may have been totally misunderstanding the whole concept :)<br></blockquote><div>Also, describing the complexity like this is strange.</div><div>It should be just O(N) where N is the number of instructions.</div><div><br></div></div></div></div>