<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1191333868;
        mso-list-type:hybrid;
        mso-list-template-ids:-1704689180 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Mehdi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">You raise a good point. At the moment we reluctantly went with the clang dependency route for small tests and for more involved BOLT development we have an external binary repo that stores large pre-built applications to be used as tests.
 You are right with respect to the downsides, but the alternative, which is to depend on the host compiler (we were previously using host_cc in LIT for quite a while) can cause more headaches in terms of test stability because we don¡¯t have control over which
 compiler was used to build LLVM. BOLT operates at level that changing even the linker can already introduce changes that may modify the outcome of a test.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regarding bugs in clang breaking BOLT tests, that is true. I wonder if this affects lldb a lot, though. It also depends on the trunk clang to build its tests. I imagine a debugger is also quite sensitive to the compiler used to build its
 test inputs.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">To summarize, I see 3 options here:<o:p></o:p></p>
<p class="MsoNormal">1 - depend on host compiler<o:p></o:p></p>
<p class="MsoNormal">2 - depend on trunk clang<o:p></o:p></p>
<p class="MsoNormal">3 - depend on pre-built binaries<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">#1 is too unstable at the moment. It¡¯s hard to communicate with other devs regarding why their test is failing because I can only repro it in my machine with my host compiler.<o:p></o:p></p>
<p class="MsoNormal">#2 may be unstable because trunk clang can be broken, and new bugs may be introduced while clang is not fixed. In my experience, BOLT is not easily broken by LLVM code, though, so we can afford some time with the tests being offline.<o:p></o:p></p>
<p class="MsoNormal">#3 is a burden on the repo because the pre-built binaries may occupy significantly more space than source code, and also are hard to read (even if using yaml).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best,<o:p></o:p></p>
<p class="MsoNormal">Rafael<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Mehdi AMINI <joker.eph@gmail.com><br>
<b>Date: </b>Friday, December 17, 2021 at 8:26 PM<br>
<b>To: </b>Rafael Auler <rafaelauler@fb.com><br>
<b>Cc: </b>Hans Wennborg <hans@chromium.org>, Maksim Panchenko <maks@fb.com>, Xinliang David Li <xinliangli@gmail.com>, F¨¡ng-ru¨¬ S¨°ng <maskray@google.com>, Sriraman Tallam <tmsriram@google.com>, Chris Lattner <clattner@llvm.org>, Andrey Bokhanko <andreybokhanko@gmail.com>,
 vladislav.khmelevskyi@huawei.com <vladislav.khmelevskyi@huawei.com>, tstellar@redhat.com <tstellar@redhat.com>, echristo@gmail.com <echristo@gmail.com>, Nick Desaulniers <ndesaulniers@google.com>, llvm-dev@lists.llvm.org <llvm-dev@lists.llvm.org><br>
<b>Subject: </b>Re: Preparing BOLT for LLVM monorepo<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The instructions to build Bolt mention: -DLLVM_ENABLE_PROJECTS="clang;lld;bolt"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It seems that clang is just a dependency here because you build C++ sources during lit-tests execution, but it's not clear to me why we don't use the host compiler or a prebuilt release here? Is there an intrinsic coupling between clang
 and Bolt at HEAD?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Having to build clang at HEAD just to run the bolt test seems like a non-trivial overhead for the casual developer, if the host compiler (or some clang pulled with apt-get or your favorite package manager) would just work.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Also in CI, even if you have a beefy enough machine, you add risks for the Bolt bot to be broken because Clang/LLVM itself would be broken: so instead of tracking Bolt bugs you end up tracking clang issues. Also the fact that clang being
 broken implicating you can't test Bolt means that in the meantime new bugs can land in Bolt and complicate auto-bisection.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">(The same question applies to lld I think?)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-- <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Mehdi<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Dec 7, 2021 at 5:36 PM Rafael Auler <<a href="mailto:rafaelauler@fb.com" target="_blank">rafaelauler@fb.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi folks,
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a href="https://github.com/facebookincubator/BOLT" target="_blank">https://github.com/facebookincubator/BOLT</a> branch ¡°main¡± contains a merge proposal of BOLT into llvm-project.
 This is llvm from Nov 30<sup>th</sup> with 1016 commits on top of it corresponding to the BOLT project.<br>
<br>
These 1016 commits would ideally be committed in a merge commit, merging LLVM as the first parent and BOLT as the second, and would be there only for the purposes of preserving project history. In this way, they should be easily skippable during a bisect of
 LLVM in the same way as the merge commit of flang. These commits represent the linear history of BOLT on top of rebased LLVM, so most commits are not buildable (since we can¡¯t build a very old version of BOLT on top of a recent LLVM base). That¡¯s why this
 is for history/blame only.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">We have addressed the issues in
<a href="https://github.com/facebookincubator/BOLT/issues/248" target="_blank">https://github.com/facebookincubator/BOLT/issues/248</a> and we are happy to continue working on any extra suggestions.<br>
<br>
Would it be better if we put this branch as a PR into llvm-project as a way to make it easier for people to review it? I don¡¯t think we can put this into phabricator. However, I guess github¡¯s bot will probably auto-close the PR. Also feel free to open new
 issues against our facebookincubator/BOLT project as a way to review it.<br>
<br>
Thanks<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Hans Wennborg <<a href="mailto:hans@chromium.org" target="_blank">hans@chromium.org</a>><br>
<b>Date: </b>Thursday, November 4, 2021 at 5:42 AM<br>
<b>To: </b>Maksim Panchenko <<a href="mailto:maks@fb.com" target="_blank">maks@fb.com</a>><br>
<b>Cc: </b>Xinliang David Li <<a href="mailto:xinliangli@gmail.com" target="_blank">xinliangli@gmail.com</a>>, F¨¡ng-ru¨¬ S¨°ng <<a href="mailto:maskray@google.com" target="_blank">maskray@google.com</a>>, Sriraman Tallam <<a href="mailto:tmsriram@google.com" target="_blank">tmsriram@google.com</a>>,
 Chris Lattner <<a href="mailto:clattner@llvm.org" target="_blank">clattner@llvm.org</a>>, Andrey Bokhanko <<a href="mailto:andreybokhanko@gmail.com" target="_blank">andreybokhanko@gmail.com</a>>, Rafael Auler <<a href="mailto:rafaelauler@fb.com" target="_blank">rafaelauler@fb.com</a>>,
<a href="mailto:vladislav.khmelevskyi@huawei.com" target="_blank">vladislav.khmelevskyi@huawei.com</a> <<a href="mailto:vladislav.khmelevskyi@huawei.com" target="_blank">vladislav.khmelevskyi@huawei.com</a>>,
<a href="mailto:tstellar@redhat.com" target="_blank">tstellar@redhat.com</a> <<a href="mailto:tstellar@redhat.com" target="_blank">tstellar@redhat.com</a>>,
<a href="mailto:joker.eph@gmail.com" target="_blank">joker.eph@gmail.com</a> <<a href="mailto:joker.eph@gmail.com" target="_blank">joker.eph@gmail.com</a>>,
<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a> <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>>, Nick Desaulniers <<a href="mailto:ndesaulniers@google.com" target="_blank">ndesaulniers@google.com</a>>,
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a> <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject: </b>Re: Preparing BOLT for LLVM monorepo</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi Maksim,<br>
<br>
On Tue, Nov 2, 2021 at 9:52 PM Maksim Panchenko <<a href="mailto:maks@fb.com" target="_blank">maks@fb.com</a>> wrote:<br>
> We are still working on finalizing the exact logistics of the merge.<br>
><br>
> However, we expect to follow the Flang project's footsteps and run the<br>
><br>
> "--no-ff" merge to preserve the history of ~1K commits. We would like to<br>
><br>
> ask for help and coordination from the release managers Tom Stellard and<br>
><br>
> Hans Wennborg.<br>
<br>
I'm no longer involved in release management, and don't really have<br>
any opinion on how to merge this.<br>
<br>
Thanks,<br>
Hans<o:p></o:p></p>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>