<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<div>
<div>
<div style="font-family:Calibri,sans-serif; font-size:11pt"><br>
<br>
Sent from my Windows Phone</div>
</div>
<div dir="ltr">
<hr>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">From:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt"><a href="mailto:dnovillo@google.com">Diego Novillo</a></span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">Sent:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt">ý12/ý13/ý2014 3:30 AM</span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">To:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt"><a href="mailto:vadve@illinois.edu">Adve, Vikram Sadanand</a>;
<a href="mailto:llvmdev@cs.uiuc.edu"><llvmdev@cs.uiuc.edu> List</a>; <a href="mailto:davidxl@google.com">
Xinliang David Li</a>; <a href="mailto:tejohnson@google.com">Teresa Johnson</a></span><br>
<span style="font-family:Calibri,sans-serif; font-size:11pt; font-weight:bold">Subject:
</span><span style="font-family:Calibri,sans-serif; font-size:11pt">Re: [LLVMdev] LTO question</span><br>
<br>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">On 12/12/14 15:56, Adve, Vikram Sadanand wrote:<br>
> I've been asked how LTO in LLVM compares to equivalent capabilities<br>
> in GCC.  How do the two compare in terms of scalability?  And<br>
> robustness for large applications?<br>
<br>
Neither GCC nor LLVM can handle our (Google) large applications. They're <br>
just too massive for the kind of linking done by LTO.<br>
<br>
When we built GCC's LTO, we were trying to address this by creating a <br>
partitioned model, where the analysis phase and the codegen phase are <br>
split to allow working on partial callgraphs <br>
(<a href=""></a>http://gcc.gnu.org/wiki/LinkTimeOptimization for details).<br>
<br>
This allows to split and parallelize the initial bytecode generation and <br>
the final optimization/codegen. However, the analysis is still <br>
implemented as a single process. We found that we cannot even load <br>
summaries, types and symbols in an efficient way.<br>
<br>
It does allow for programs like Firefox to be handled. So, if by "big" <br>
you need to handle something of that size, this model can doit.<br>
<br>
With LLVM, I can't even load the IR for one of our large programs on a <br>
box with 64Gb of RAM.<br>
<br>
> Also, are there any ongoing efforts or plans to improve LTO in LLVM<br>
> in the near future?<br>
<br>
Yes. We are going to be investing in this area very soon. David and <br>
Teresa (CC'd) will have details.<br>
<br>
<br>
Diego.<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
LLVMdev@cs.uiuc.edu         <a href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div>
</span></font>
</body>
</html>