<div dir="ltr">I was able to reproduce the problem. It seems to relate to the use of a UniqueVector (which uses std::vector internally) of SmallVectors here:<div><a href="https://github.com/llvm/llvm-project/blob/master/llvm/utils/TableGen/DFAEmitter.h#L91">https://github.com/llvm/llvm-project/blob/master/llvm/utils/TableGen/DFAEmitter.h#L91</a> <div><div>Aside from potential MSVC bugs, this is a poor choice of data structures. I would suggest using a SmallVector<T, 0> or std::vector<T> instead. So, we could commit that as a workaround.</div></div></div><div><br></div><div>Relatedly, debug MSVC tablegen builds are still unusably slow. :(</div><div><a href="https://bugs.llvm.org/show_bug.cgi?id=28222">https://bugs.llvm.org/show_bug.cgi?id=28222</a> <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 22, 2020 at 11:15 AM Reid Kleckner <<a href="mailto:rnk@google.com">rnk@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I don't think there is anymore upstream LLVM testing for 32-bit MSVC. I'll run a local build in this configuration and look into it. I'll use this compiler version:<div>Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28315 for x86<br></div><div><br></div><div>We had so many issues in clang-cl around calling conventions for "small" objects with interior pointers, I wouldn't be surprised if there are bugs.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 22, 2020 at 10:01 AM Francois Pichet via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Is anybody using the LLVM/clang/lldb compiled with the MSVC 2019 (x86-32bit) successfully?<div>I am getting crash in SmallVector at multiple places after a llvm:SmallVector is being moved around in move constructor or move operator=.</div><div> Not sure what is going on.</div><div><br></div><div> ~SmallVectorImpl() {<br> if (!this->isSmall())<br> free(this->begin()); // <=== crash here, line 336 SmallVector.h<br> }<br></div><div><br></div><div>The crash occurs only with clang compile in debug mode. Release mode is fine. </div><div><br></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</blockquote></div>