<html xmlns:v="urn:schemas-microsoft-com:vml" 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=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Georgia;
        panose-1:2 4 5 2 5 4 5 2 3 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
p.gmailmsg, li.gmailmsg, div.gmailmsg
        {mso-style-name:gmail_msg;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:black;}
span.gmailmsg1
        {mso-style-name:gmail_msg1;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Consolas","serif";
        color:black;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.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;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">As this is an ABI-incompatible upgrade, and it's changing the informal policy on upgrades, could we please have some more grace time? Ideally another month, so the 15th October. If we haven't sorted it by then, it's our problem.<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I had originally proposed 15 September mostly because nobody had proposed a specific date, and it has been kind of dragging on for a while.  The primary cost
 of deferring to 15 October seems to be that the community (Hi Reid!) will have to keep fixing VS2013 related problems for another month, which isn't ideal but hopefully we can tolerate it.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">(In fact at Sony we're only throwing the internal switch today, and we'll have to see what happens.)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:windowtext"> llvm-dev [mailto:llvm-dev-bounces@lists.llvm.org]
<b>On Behalf Of </b>Craig, Ben via llvm-dev<br>
<b>Sent:</b> Wednesday, September 07, 2016 2:42 PM<br>
<b>To:</b> Zachary Turner; James Molloy; llvm-dev@lists.llvm.org<br>
<b>Subject:</b> Re: [llvm-dev] [cfe-dev] Revisiting our informal policy to support two versions of MSVC<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p>I'll need to dig up the references for that... but I'm pretty sure the universal CRT that debuted in MSVC 2015 only covers the C parts, and not the C++ parts.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 9/7/2016 4:28 PM, Zachary Turner wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">It's worth pointing out that from 2015 and on, they claim to support full forwards compatibility of the standard libraries, so this should (in theory) never be an issue again.<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, Sep 7, 2016 at 1:12 PM James Molloy via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</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">
<p class="MsoNormal">Hi,<br>
<br>
As I understand it the specific issue we're seeing is related to what Martin described. But due to numerous bugs found when mixing objects compiled with different versions of MSVC in the past, we now are shy of doing it even if it seems to work superficially
 - that's no guarantee bugs won't be found down the line. We'd much prefer to stay within the realms of what Microsoft support.
<br>
<br>
Cheers,<br>
<br>
James<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, 7 Sep 2016 at 20:53, Craig, Ben via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</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>
<p class="gmailmsg">Note that this is intentional from the MSVC C++ library implementation side of things.  For major versions, no attempt is made to preserve library ABI compatibility.<o:p></o:p></p>
<p class="MsoNormal">I am aware of a language ABI break in VC++ 2013.  <a href="https://randomascii.wordpress.com/2013/12/01/vc-2013-class-layout-change-and-wasted-space/" target="_blank">
https://randomascii.wordpress.com/2013/12/01/vc-2013-class-layout-change-and-wasted-space/</a><br>
<br>
I'm not currently aware of any on the VC++ 2015 side of things, but that doesn't mean much.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 9/7/2016 2:34 PM, Martin O'Riordan via llvm-dev wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">Apart from the obvious licencing issues, each time I have moved from one version of VC++ to another, the big problem I have had is not specifically the ABI at the
 register passing, stack organisation level, but rather the implementation details of the Standard C++ libraries, and in particular the STL containers.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">While the compiler team puts considerable effort into maintaining the ABI, the C++ library implementation usually changes a lot.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">Since this is largely in the form of very complex headers defining templates which in turn cause other helper templates to be used, it is here that I find things go
 awry.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">So for C++, a function like:<o:p></o:p></span></p>
</div>
<div>
<div style="margin-left:30.0pt">
<p class="MsoNormal"><span class="gmailmsg1"><span style="font-family:"Courier New"">std::list<int> foo();</span></span><span style="font-family:"Georgia","serif""><o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-family:"Georgia","serif""><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">seems simple enough, but if the caller and the callee are compiled with different versions, it usually won't work because of some artefact of the STL implementation
 tuning that occurs between versions.  In particular, this impacts things like using C++ interfaces across DLLs and in pre-compiled libraries.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">I think that the ABI maintenance in this case tends to be for C and POD compatability, but not for the higher level C++ compatability which is unfortunate and restricts
 how we can use C++.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Georgia","serif"">Is it possible that it is this aspect of the version change that is causing your ABI difficulties?<o:p></o:p></span></p>
</div>
<div style="margin-left:30.0pt">
<p class="MsoNormal"><span style="font-family:"Georgia","serif"">MartinO<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Georgia","serif""><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 7 September 2016 at 20:18, Zachary Turner via llvm-dev <span class="gmailmsg1">
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<o:p></o:p></p>
<p class="MsoNormal">Can you elaborate on the abi incompatibility? I thought there were no breaks
<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, Sep 7, 2016 at 7:59 AM James Molloy via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</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>
<p class="MsoNormal">Hi all, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Firstly sorry I'm a bit late responding on this one. Internally to ARM we build LLVM for Windows. Our current build cluster has only VS2013 installed and as a result of this thread we've been working on getting VS2015 installed. This involves
 a certain amount of IT-wrangling as the cluster we use is company-wide. There have been some hiccups regarding licensing of MSVC professional (we can't use the community edition for the same reasons mentioned by Paul previously) but we hoped to be ready in
 time for the 15th September switchover date.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It's recently been realised that VS2013 and VS2015 are not ABI compatible (something that really surprised me), and this means we have to synchronize moving LLVM's build to VS2015 as well as upgrading a third party library that we receive
 from the vendor in compiled library form. This is not something we're capable of doing by September 15th.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We try really hard at ARM to hide our internal processes because we believe that they're on the whole irrelevant to the community, however in this case we'd be really stuck, unable to get production builds.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As this is an ABI-incompatible upgrade, and it's changing the informal policy on upgrades, could we please have some more grace time? Ideally another month, so the 15th October. If we haven't sorted it by then, it's our problem.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Cheers,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">James<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Thu, 1 Sep 2016 at 21:06 Mehdi Amini via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<o:p></o:p></p>
</div>
</div>
<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>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Sep 1, 2016, at 1:05 PM, Reid Kleckner <<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">On Thu, Sep 1, 2016 at 12:53 PM, Mehdi Amini via cfe-dev <span class="gmailmsg1">
<<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:
<o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal">Isn’t a big (the most) reason for supporting “old” toolchains to allow downstream users to upgrade with some flexibility?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">If I have a large codebase that is using LLVM (let say a few custom backends), and is validated with “MSVC 2013”, I can upgrade to “2015” but I will need some qualification/validation: this is not free and take some time. If you drop aggressively
 supports for “old” toolchain it means that I’m either stuck with an “old” LLVM or that I have to update earlier than expected.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Isn’t this usually balanced in upstream LLVM to upgrade when there is a real *benefit* to it? <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I’m mentioning it because it seems to conflict with the "always upgrade to the newest one unless there are serious issues with it” you mentioned above.<o:p></o:p></p>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I agree, we should raise the minimum VS version requirement when the benefits to the LLVM community outweigh the costs of switching for major LLVM contributors and users. I think we'll always make that decision in the same way: by raising
 it on the mailing lists and discussing the pros and cons. That's basically what David said when he kicked this whole discussion off, anyway:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">"""<span class="gmailmsg1"><span style="font-size:9.5pt">But if we find ourselves in a situation where asking folks to upgrade to a compiler which has been widely deployed soothes development for the greater LLVM community, we should consider
 dropping support for the older versions of that compiler."""</span></span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="gmailmsg1"><span style="font-size:9.5pt">I think everything is working as intended here.</span></span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Right, to be clear there is no misunderstanding: I was absolutely not suggesting the opposite when answering Zach..<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>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Mehdi<o:p></o:p></p>
</div>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span class="gmailmsg1"><span style="font-size:9.5pt">We raised the VS 2013 upgrade issue, discussed it, determined that it was holding us back, and now we're doing the upgrade. If VS "15" brings major language compatibility improvements,
 I imagine we'll be having this same discussion again next year. If it doesn't, and supporting 2015 and "15" at the same time has the same cost, then we won't bother raising the floor for a while.</span></span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
</div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal">_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>LLVM Developers mailing list<o:p></o:p></pre>
<pre><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><o:p></o:p></pre>
<pre><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<pre>-- <o:p></o:p></pre>
<pre>Employee of Qualcomm Innovation Center, Inc.<o:p></o:p></pre>
<pre>Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<o:p></o:p></pre>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
</blockquote>
<p class="MsoNormal"><br>
<br>
<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre>Employee of Qualcomm Innovation Center, Inc.<o:p></o:p></pre>
<pre>Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<o:p></o:p></pre>
</div>
</div>
</body>
</html>