<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 15, 2017 at 2:55 AM, David Chisnall via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 14 Mar 2017, at 18:39, Rui Ueyama via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
><br>
> LLVM 4.0.0 is out, and I can say that LLD/ELF is now ready for production use at least for x86-64 (and probably for AArch64 and MIPS).<br>
<br>
</span>We’re now using it with all three architectures on FreeBSD (though only the n64 ABI for MIPS) and will file bugs.  One QoI issue that’s bitten us a couple of times is that the versions of clang and lld must match for LTO to work.  If they don’t, we don’t get an error message, we simply get programs that segfault on startup.  I’m a bit surprised that reading the bitcode doesn’t return an error that LLD can report and refuse to link.  We’ve seen this error mixing clang 4.0 and lld trunk.<br></blockquote><div><br></div><div>If you can put a --reproduce archive up somewhere and file a bug that would be really useful. The bitcode should be backward compatible. I would not be surprised by older LLD and newer Clang causing issues, but the reverse Should Work.</div><div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
That’s going to make enabling LTO for FreeBSD package builds problematic once we start shipping lld in the base system - anything built with the system compiler will work fine, but anything built with a compiler from ports will silently generate non-working binaries.  Fortunately for LLVM, this includes building a non-working tablegen, so the build fails rather than appearing to succeed and giving non-working binaries.<br>
<br>
For dogfooding purposes, it would be very helpful if the LLVM CMake files allowed you to specify the suffix for the system clang and LLD to use in a single place.  Currently, telling it to use lld will pass -fuse-ld=lld, but we typically need to actually pass -fuse-ld=lld40 or -fuse-ld=lld-devel to pick the LLD version that matches the compiler version that we’re using.<br>
<br>
David<br>
<div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</div></div></blockquote></div><br></div></div>