<div dir="ltr">r326307 and r327870 made changes that allow declaring ObjC __strong and __weak fields in C structs, so they shouldn't have any effect if you are compiling your code in C++ mode. Is it possible to come up with a small C++ test case that causes clang to emit the destructor functions you are seeing?<br><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">On Wed, Apr 4, 2018 at 12:16 PM, John McCall <span dir="ltr"><<a href="mailto:rjmccall@apple.com" target="_blank">rjmccall@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div><span><blockquote type="cite"><div>On Apr 4, 2018, at 3:07 PM, Reid Kleckner via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:</div><br class="m_-6696448776857302155m_1314161812883705558Apple-interchange-newline"><div><div dir="ltr">Looks like Akira added a bunch of stuff for this in r326307. It is supposed to relate to ARC and __strong, __weak, etc. It's pretty complex. :(<div><br></div><div>That code does not appear to work for non-MachO. It creates LLVM IR functions directly without going through the usual CGM codepaths, so it doesn't add a comdat.</div></div></div></blockquote><div><br></div></span>I would not have expected this patch to affect the compilation of ordinary C++ code.</div><span class="m_-6696448776857302155HOEnZb"><font color="#888888"><div><br></div><div>John.</div></font></span><span><div><br></div><div><blockquote type="cite"><div><br><div class="gmail_quote"><div dir="ltr">On Wed, Apr 4, 2018 at 1:32 AM Stephan Bergmann via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-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">After a recent pull of LLVM/Clang trunk, my clang-cl build of<br>
LibreOffice on Windows started to fail to link some DLL because of<br>
__destructor_1 and __destructor_8 symbols defined in multiple objects.<br>
<br>
I haven't been able yet to strip that down, and looking at the objects'<br>
assembler output it isn't clear to me what those symbols are emitted for.<br>
<br>
Do those symbols maybe ring a bell for anybody?  Is that some recent<br>
addition?<br>
______________________________<wbr>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br>
</blockquote></div>
______________________________<wbr>_________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-dev</a><br></div></blockquote></div><br></span></div></blockquote></div><br></div></div>