<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 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 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 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 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 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 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 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 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 href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br class="gmail_msg">
<a 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 href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br class="gmail_msg">
<a 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 href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="gmail_msg">
<a 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 href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>
<a 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 href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="gmail_msg">
<a 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 href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a><br class="gmail_msg">
<a 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>