<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 21, 2016 at 8:58 PM, John Criswell <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"><span class="">
<div>On 6/20/16 11:29 PM, Mehdi Amini wrote:<br>
</div>
<blockquote type="cite">
<br>
<div>
<blockquote type="cite">
<div>On Jun 20, 2016, at 11:12 AM, John Criswell via
llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>
wrote:</div>
<br>
<div>
<div>On 6/20/16 9:39 AM, vivek
pandya via llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Dear Community,
<div><br>
</div>
<div>To improve current interprocedural
register allocation (IPRA) , we have planned to set
callee saved registers to none for local functions,
currently I am doing it in following way:</div>
<div><br>
</div>
<div>if (F->hasLocalLinkage() <span> </span><span>&& !F->hasAddressTaken()</span>)
{</div>
</div>
</blockquote>
<br>
<span>As an aside, you might want to analyze how
many functions have both local linkage and are not address
taken. I recall that many functions returned false for
hasAddressTaken() because some direct calls casted the
function to a different function type before calling it.
Such functions are still not address taken, but the simple
hasAddressTaken() method can't determine it.</span><br>
</div>
</blockquote>
<div><br>
</div>
<div>Looks like hasAddressTaken could be updated to handle these
simple case maybe?</div>
</div>
</blockquote>
<br></span>
That might make sense if it has not been fixed already. Another
approach (if in-tree LLVM passes are frequently checking for
indirect calls) would be to write a simple analysis pass that lazily
computes the information on demand. That way, if multiple passes
are checking the same function repeatedly, it gets cached in the
analysis pass instead of being recomputed (so long as the analysis
pass is not invalidated by a transform). <br>
<br></div></blockquote><div>Addition of new pass will require other passes to be modified. So it will be good have strong reason for adding new pass. Other wise I am in favor to modify hasAddressTaken().</div><div><br></div><div>-Vivek</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000">
Regards,<br>
<br>
John Criswell<span class=""><br>
<p><br>
</p>
<pre cols="72">--
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
</span></div>
</blockquote></div><br></div></div>