<html><body><p><font size="2">Hello,</font><br><br><font size="2">My team and I noticed that callsite hotness information is not preserved from compile to link step with LTO/thinLTO enabled.  As a result, the link step inlining pass remains conservative when inlining callsites known to be hot (ie. without the 'HotCallSiteThreshold' which is set at 3000 by default).  There are likely many cross-module inlining opportunities lost this way, and diminishes the benefit of using LTO/thinLTO+PGO together.</font><br><br><font size="2">In general, does LLVM pass profiling information through the IR to the link step other than branch probabilities and function entry counts?  If not, are there plans to do so in the future?  For inlining specifically, perhaps we can mark callsites with hot/cold attributes during compile step to ensure LTO inlining will give appropriate threshold bonuses/penalties.</font><br><br><font size="2">Any thoughts/insights/comments would be appreciated.</font><br><br><font size="2">Cheers,</font><br><br><font size="2">Graham Yiu<br>LLVM Compiler Development<br>IBM Toronto Software Lab<br>Office: (905) 413-4077      C2-707/8200/Markham<br>Email: gyiu@ca.ibm.com</font><BR>
</body></html>