<p dir="ltr">We need a demangler in llvm, and that requires annoying tradeoffs:</p>
<p dir="ltr">* llvm depends on libc++abi.<br>
* libc++abi depends on llvm.<br>
* both llvm and libc++abi dependent on a libdemangle.<br>
* we keep a file in both repositories.<br>
* we have two independent implementations.</p>
<p dir="ltr">The first 3 introduce annoying dependencies. The last one means the llvm demangler can have a nice interface (stringref), but duplicates a lot of code.</p>
<p dir="ltr">Having a file that is copied in both repositories is the least horrible option IMHO. Having said that, any solution where lld on windows can demangle itanium names would work for us.</p>
<p dir="ltr">Cheers,<br>
Rafael</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Aug 24, 2016 1:16 PM, "Mehdi Amini" <<a href="mailto:mehdi.amini@apple.com">mehdi.amini@apple.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Aug 24, 2016, at 9:56 AM, Craig, Ben <<a href="mailto:ben.craig@codeaurora.org">ben.craig@codeaurora.org</a>> wrote:<br>
><br>
> On 8/24/2016 11:31 AM, Rafael Espíndola wrote:<br>
>>> 1. I think there are already too many build time dependencies crossing the compiler / runtime boundary. I'm tired of my libcxx and libcxxabi builds failing because of unrelated cmake changes in LLVM. To avoid that, I could build a standalone version... but now that won't be easily possible because of this change.<br>
>> Not sure I follow. Note that this function is in an independent<br>
>> library with no dependencies.<br>
>><br>
>>> Building libcxx and libcxxabi shouldn't require me to pull down llvm sources, or to have a "dev" install of llvm, and this change makes that problem even worse than it already is. Will this even work for the cross compilation cases?<br>
>> This should not change this case at all. This just adds a file to llvm<br>
>> itself. In a future change I will add a ifdef to it so that it can<br>
>> also be used with no changes in libcxxabi.<br>
> I guess I'm protesting the future change, rather than this change. libc++abi should not use source files, header files, static libraries, or shared objects that come from the llvm repository.<br>
<br>
That's bothering: it means that any functionality has to be reimplemented (can’t use simple StringRef or Twine helper, which is annoying when doing string processing like here).<br>
<br>
—<br>
Mehdi<br>
<br>
</blockquote></div></div>