<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>