<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <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.<br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 9/7/2016 4:28 PM, Zachary Turner
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAAErz9hj7Radx9+_9XC4H-6e7OxxkF1bTu71a-HgdLpZQrj_uw@mail.gmail.com"
      type="cite">
      <div dir="ltr">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.</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">On Wed, Sep 7, 2016 at 1:12 PM James Molloy via
          llvm-dev <<a moz-do-not-send="true"
            href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br
            class="gmail_msg">
          <br class="gmail_msg">
          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 class="gmail_msg">
          <br class="gmail_msg">
          Cheers,<br class="gmail_msg">
          <br class="gmail_msg">
          James<br class="gmail_msg">
          <div class="gmail_quote gmail_msg">
            <div dir="ltr" class="gmail_msg">On Wed, 7 Sep 2016 at
              20:53, Craig, Ben via llvm-dev <<a
                moz-do-not-send="true"
                href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg"
                target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br
                class="gmail_msg">
            </div>
            <blockquote class="gmail_quote gmail_msg" style="margin:0 0
              0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
                <p class="gmail_msg">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.<br class="gmail_msg">
                </p>
                I am aware of a language ABI break in VC++ 2013. 
                <a moz-do-not-send="true"
href="https://randomascii.wordpress.com/2013/12/01/vc-2013-class-layout-change-and-wasted-space/"
                  class="gmail_msg" target="_blank">https://randomascii.wordpress.com/2013/12/01/vc-2013-class-layout-change-and-wasted-space/</a><br
                  class="gmail_msg">
                <br class="gmail_msg">
                I'm not currently aware of any on the VC++ 2015 side of
                things, but that doesn't mean much.</div>
              <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg"><br
                  class="gmail_msg">
                <br class="gmail_msg">
                <div class="gmail_msg">On 9/7/2016 2:34 PM, Martin
                  O'Riordan via llvm-dev wrote:<br class="gmail_msg">
                </div>
                <blockquote type="cite" class="gmail_msg">
                  <div dir="ltr" class="gmail_msg">
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">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.<br class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">While
                      the compiler team puts considerable effort into
                      maintaining the ABI, the C++ library
                      implementation usually changes a lot.<br
                        class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">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.<br class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">So
                      for C++, a function like:<br class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">
                      <div style="margin-left:40px" class="gmail_msg"><span
                          style="font-family:monospace,monospace"
                          class="gmail_msg">std::list<int> foo();</span><br
                          class="gmail_msg">
                      </div>
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">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.<br class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">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++.<br
                        class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small">Is
                      it possible that it is this aspect of the version
                      change that is causing your ABI difficulties?<br
                        class="gmail_msg">
                      <br class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small;margin-left:40px">MartinO<br
                        class="gmail_msg">
                    </div>
                    <div class="gmail_default gmail_msg"
                      style="font-family:georgia,serif;font-size:small"><br
                        class="gmail_msg">
                    </div>
                  </div>
                  <div class="gmail_extra gmail_msg"><br
                      class="gmail_msg">
                    <div class="gmail_quote gmail_msg">On 7 September
                      2016 at 20:18, Zachary Turner via llvm-dev <span
                        dir="ltr" class="gmail_msg"><<a
                          moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org"
                          class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>></span>
                      wrote:<br class="gmail_msg">
                      <blockquote class="gmail_quote gmail_msg"
                        style="margin:0 0 0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex">Can you elaborate on the
                        abi incompatibility? I thought there were no
                        breaks <br class="gmail_msg">
                        <div class="gmail_quote gmail_msg">
                          <div dir="ltr" class="gmail_msg">On Wed, Sep
                            7, 2016 at 7:59 AM James Molloy via cfe-dev
                            <<a moz-do-not-send="true"
                              href="mailto:cfe-dev@lists.llvm.org"
                              class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>>
                            wrote:<br class="gmail_msg">
                          </div>
                          <blockquote class="gmail_quote gmail_msg"
                            style="margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <div dir="ltr" class="gmail_msg">Hi all,
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">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.</div>
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">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.</div>
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">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.</div>
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">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.</div>
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">Cheers,</div>
                              <div class="gmail_msg"><br
                                  class="gmail_msg">
                              </div>
                              <div class="gmail_msg">James</div>
                            </div>
                            <br class="gmail_msg">
                            <div class="gmail_quote gmail_msg">
                              <div dir="ltr" class="gmail_msg">On Thu, 1
                                Sep 2016 at 21:06 Mehdi Amini via
                                cfe-dev <<a moz-do-not-send="true"
                                  href="mailto:cfe-dev@lists.llvm.org"
                                  class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>>
                                wrote:<br class="gmail_msg">
                              </div>
                            </div>
                            <div class="gmail_quote gmail_msg">
                              <blockquote class="gmail_quote gmail_msg"
                                style="margin:0 0 0 .8ex;border-left:1px
                                #ccc solid;padding-left:1ex">
                                <div style="word-wrap:break-word"
                                  class="gmail_msg">
                                  <div class="gmail_msg">
                                    <blockquote type="cite"
                                      class="gmail_msg">
                                      <div class="gmail_msg">On Sep 1,
                                        2016, at 1:05 PM, Reid Kleckner
                                        <<a moz-do-not-send="true"
                                          href="mailto:rnk@google.com"
                                          class="gmail_msg"
                                          target="_blank">rnk@google.com</a>>
                                        wrote:</div>
                                      <br class="gmail_msg">
                                      <div class="gmail_msg">
                                        <div dir="ltr" class="gmail_msg">
                                          <div class="gmail_extra
                                            gmail_msg">
                                            <div class="gmail_quote
                                              gmail_msg">On Thu, Sep 1,
                                              2016 at 12:53 PM, Mehdi
                                              Amini via cfe-dev <span
                                                dir="ltr"
                                                class="gmail_msg"><<a
                                                  moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>></span>
                                              wrote:
                                              <blockquote
                                                class="gmail_quote
                                                gmail_msg"
                                                style="margin:0px 0px
                                                0px
                                                0.8ex;border-left:1px
                                                solid
                                                rgb(204,204,204);padding-left:1ex">
                                                <div
                                                  style="word-wrap:break-word"
                                                  class="gmail_msg">
                                                  <div class="gmail_msg">
                                                    <div
                                                      class="gmail_msg">
                                                      <div
                                                        class="gmail_msg">Isn’t
                                                        a big (the most)
                                                        reason for
                                                        supporting “old”
                                                        toolchains to
                                                        allow downstream
                                                        users to upgrade
                                                        with some
                                                        flexibility?</div>
                                                      <div
                                                        class="gmail_msg">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.</div>
                                                      <div
                                                        class="gmail_msg"><br
class="gmail_msg">
                                                      </div>
                                                      <div
                                                        class="gmail_msg">Isn’t
                                                        this usually
                                                        balanced in
                                                        upstream LLVM to
                                                        upgrade when
                                                        there is a real
                                                        *benefit* to
                                                        it? </div>
                                                      <div
                                                        class="gmail_msg">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.</div>
                                                    </div>
                                                  </div>
                                                </div>
                                              </blockquote>
                                              <div class="gmail_msg"><br
                                                  class="gmail_msg">
                                              </div>
                                              <div class="gmail_msg">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:</div>
                                              <div class="gmail_msg"><br
                                                  class="gmail_msg">
                                              </div>
                                              <div class="gmail_msg">"""<span
style="font-size:12.8px" class="gmail_msg">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></div>
                                              <div class="gmail_msg"><span
style="font-size:12.8px" class="gmail_msg"><br class="gmail_msg">
                                                </span></div>
                                              <div class="gmail_msg"><span
style="font-size:12.8px" class="gmail_msg">I think everything is working
                                                  as intended here.</span></div>
                                            </div>
                                          </div>
                                        </div>
                                      </div>
                                    </blockquote>
                                    <div class="gmail_msg"><br
                                        class="gmail_msg">
                                    </div>
                                  </div>
                                </div>
                                <div style="word-wrap:break-word"
                                  class="gmail_msg">
                                  <div class="gmail_msg">
                                    <div class="gmail_msg">Right, to be
                                      clear there is no
                                      misunderstanding: I was absolutely
                                      not suggesting the opposite when
                                      answering Zach..</div>
                                    <div class="gmail_msg"><br
                                        class="gmail_msg">
                                    </div>
                                    <div class="gmail_msg">— </div>
                                  </div>
                                </div>
                                <div style="word-wrap:break-word"
                                  class="gmail_msg">
                                  <div class="gmail_msg">
                                    <div class="gmail_msg">Mehdi</div>
                                  </div>
                                </div>
                                <div style="word-wrap:break-word"
                                  class="gmail_msg">
                                  <div class="gmail_msg">
                                    <div class="gmail_msg"><br
                                        class="gmail_msg">
                                    </div>
                                    <br class="gmail_msg">
                                    <blockquote type="cite"
                                      class="gmail_msg">
                                      <div class="gmail_msg">
                                        <div dir="ltr" class="gmail_msg">
                                          <div class="gmail_extra
                                            gmail_msg">
                                            <div class="gmail_quote
                                              gmail_msg">
                                              <div class="gmail_msg"><span
style="font-size:12.8px" class="gmail_msg"> 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></div>
                                            </div>
                                          </div>
                                        </div>
                                      </div>
                                    </blockquote>
                                  </div>
                                </div>
                                <div style="word-wrap:break-word"
                                  class="gmail_msg"><br
                                    class="gmail_msg">
                                </div>
                              </blockquote>
                            </div>
                            <div class="gmail_quote gmail_msg">
                              <blockquote class="gmail_quote gmail_msg"
                                style="margin:0 0 0 .8ex;border-left:1px
                                #ccc solid;padding-left:1ex">_______________________________________________<br
                                  class="gmail_msg">
                                cfe-dev mailing list<br
                                  class="gmail_msg">
                                <a moz-do-not-send="true"
                                  href="mailto:cfe-dev@lists.llvm.org"
                                  class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br
                                  class="gmail_msg">
                                <a moz-do-not-send="true"
                                  href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                                  rel="noreferrer" class="gmail_msg"
                                  target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
                                  class="gmail_msg">
                              </blockquote>
                            </div>
_______________________________________________<br class="gmail_msg">
                            cfe-dev mailing list<br class="gmail_msg">
                            <a moz-do-not-send="true"
                              href="mailto:cfe-dev@lists.llvm.org"
                              class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br
                              class="gmail_msg">
                            <a moz-do-not-send="true"
                              href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
                              rel="noreferrer" class="gmail_msg"
                              target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
                              class="gmail_msg">
                          </blockquote>
                        </div>
                        <br class="gmail_msg">
                        _______________________________________________<br
                          class="gmail_msg">
                        LLVM Developers mailing list<br
                          class="gmail_msg">
                        <a moz-do-not-send="true"
                          href="mailto:llvm-dev@lists.llvm.org"
                          class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br
                          class="gmail_msg">
                        <a moz-do-not-send="true"
                          href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                          rel="noreferrer" class="gmail_msg"
                          target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br
                          class="gmail_msg">
                        <br class="gmail_msg">
                      </blockquote>
                    </div>
                    <br class="gmail_msg">
                  </div>
                  <br class="gmail_msg">
                  <fieldset class="gmail_msg"></fieldset>
                  <br class="gmail_msg">
                  <pre class="gmail_msg">_______________________________________________
LLVM Developers mailing list
<a moz-do-not-send="true" href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>
<a moz-do-not-send="true" href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
                </blockquote>
                <br class="gmail_msg">
              </div>
              <div bgcolor="#FFFFFF" text="#000000" class="gmail_msg">
                <pre cols="72" class="gmail_msg">-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
</pre>
              </div>
              _______________________________________________<br
                class="gmail_msg">
              LLVM Developers mailing list<br class="gmail_msg">
              <a moz-do-not-send="true"
                href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg"
                target="_blank">llvm-dev@lists.llvm.org</a><br
                class="gmail_msg">
              <a moz-do-not-send="true"
                href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br
                class="gmail_msg">
            </blockquote>
          </div>
          _______________________________________________<br
            class="gmail_msg">
          LLVM Developers mailing list<br class="gmail_msg">
          <a moz-do-not-send="true"
            href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg"
            target="_blank">llvm-dev@lists.llvm.org</a><br
            class="gmail_msg">
          <a moz-do-not-send="true"
            href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
            rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br
            class="gmail_msg">
        </blockquote>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
</pre>
  </body>
</html>