<br><br><div class="gmail_quote">On Mon, Nov 29, 2010 at 1:17 AM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr">baldrick@free.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi David,<br>
<div class="im"><br>
> Interesting -- LLVM does perform on the fly cleanups during inlining<br>
> transformation -- this will make summary update precise. One thing I notice from<br>
> the debug pass dump is that the 'deduce function attribute' pass happens before<br>
> the clean up -- Is it intended?<br>
<br>
</div>you are correct.  This is due to a limitation of the pass manager: it would<br>
clearly be better to run the function attributes pass after the per-function<br>
passes that follow the inliner, but currently if you try what happens is that<br>
first the inliner and on the fly cleanups get run on every function, and only<br>
when they have finished the function attributes pass gets run on every<br>
function.  That means that function attributes of callees will not have been<br>
calculated when the inliner (and the subsequent function passes) process a<br>
function, which is bad.  I think the pass manager should be fixed to not do<br>
this, at which point the function attributes pass could be moved later.<br></blockquote><div><br></div><div>So bottom up traversal of the (scc node of) callgraph is not sufficient to guarantee all callees are processed before the caller?</div>
<div><br></div><div>Thanks,</div><div><br></div><div>David</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Ciao,<br>
<font color="#888888"><br>
Duncan.<br>
</font><div><div></div><div class="h5">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br>