<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 2017-Feb-03, at 15:55, Peter Collingbourne <<a href="mailto:peter@pcc.me.uk" class="">peter@pcc.me.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 3, 2017 at 3:34 PM, Duncan P. N. Exon Smith <span dir="ltr" class=""><<a href="mailto:dexonsmith@apple.com" target="_blank" class="">dexonsmith@apple.com</a>></span> wrote:<br class=""><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">I spent some more time on this and I understand the failure.<br class="">
<br class="">
I'm really uncomfortable with the fix, though.  It seems partial -- it fixes the particular crash you found, but couldn't this happen with other fields in DISubprogram?<br class=""></blockquote><div class=""><br class=""></div><div class="">Maybe -- I guess that's what I was alluding to in my commit message. Do you think anything could break if I just remove the MDNodeSubsetEqualImpl specialization of DISubprogram?</div></div></div></div></div></blockquote><div><br class=""></div><div>Yes.  I suspect we'll get a big regression (compile-time? memory?) in -flto=full, and possible a regression in -flto=thin (which is what I was targeting at the time).  IIRC, the point of this was to (a) reduce number of nodes and (b) cut down on ValueMapper traffic (ironically, the same thing that it breaks).</div><div><br class=""></div><div>Of course, correctness should trump performance, but I'm pretty concerned about turning it off blind.  I'm also still looking for other options...</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">
Also, where does the ValueMapper run in this opt invocation?  Is that what -run-twice does?<br class=""></blockquote><div class=""><br class=""></div><div class="">Yes, -run-twice causes us to clone the module, which uses ValueMapper. See <a href="http://llvm-cs.pcc.me.uk/tools/opt/opt.cpp#719" class="">http://llvm-cs.pcc.me.uk/tools/opt/opt.cpp#719</a></div></div></div></div></div></blockquote><div><br class=""></div><div>Got it.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class="">Thanks,</div></div>-- <br class=""><div class="gmail_signature"><div dir="ltr" class="">-- <div class="">Peter</div></div></div>
</div></div>
</div></blockquote></div><br class=""></body></html>