<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2017-05-30 12:52 GMT-07:00 Bob Haarman via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><u></u><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div>I would like to better understand how you came to conclude that the tablegen re-runs based on changes in Support are what's causing your build to be slow and what part specifically is taking all that time. I can do a clean release + assertions build of LLVM, Clang, compiler-rt and lld in about 5 minutes, plus 40 seconds to run cmake, on what I think is similar hardware to what Zach is using. If I swap Ptr += ret and Size -= Ret in raw_fd_ostream::write_impl so that Support changes, I can do an incremental build in about 10 seconds, including the regeneration of various .inc files. How do we get from there to 10 minutes for an incremental build?<br></div></div></div></blockquote><div><br></div><div>Have you tried a Debug build with all the backends configured in? I think part of the issue is that Tablegen suffers from being compiled in debug mode (hence the OPTIMIZED_TABLE_GEN cmake option).</div><div>Also not everyone has a "google-like" workstation ;)</div><div><br></div><div>-- </div><div>Mehdi</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div style="font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif"><div><br>---- On Fri, 26 May 2017 17:59:43 -0700 <b>Zachary Turner via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></b> wrote ----<br></div><span class="gmail-"><div class="gmail-m_-3397417173938843590zmail_extra"><div><br></div><blockquote style="border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:6px;margin:0px 0px 0px 5px"><div><div dir="ltr">It's that TableGen depends on Support, so if you change one file in support, support gets recompiled into a new static archive, which triggers a rerun of tablegen on all the tablegen inputs, which is extremely slow.<br></div><div><br></div><div><div dir="ltr">On Fri, May 26, 2017 at 5:56 PM Hal Finkel <<a href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>> wrote:<br></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><p><br></p><div><br></div><div>On 05/26/2017 07:47 PM, Zachary Turner       via llvm-dev wrote:<br></div><blockquote><div dir="ltr"><div>Changing a header file somewhere and having to         spend 10 minutes waiting for a build leads to a lot of wasted         developer time. <br></div><div><br></div><div>The real culprit here is tablegen.  Can we split support           and ADT into two - the parts that tablegen depends on and the           parts that it doesn't?<br></div></div></blockquote><div><br></div></div><div><div>What's the actual problem here? Is it that TableGen regenerates     different files and so we then need to rebuild all dependencies of     those files? Maybe we should use a diff-and-update approach (I     thought, however, that we already did that).<br></div><div> <br></div><div>  -Hal<br></div><div> <br></div></div></blockquote></div></div></blockquote></div><div><br></div></span></div></div><br>______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div>