Hello Chris, all,<div>If its still relevant, here comes my partial patch for 889 broken down (roughly) </div><div>by modules. I've decided not to change whole iplist for value, but rather leave </div><div>default one operating on Values using llvm::deleteValue, with specializations </div>
<div>for AliasSet, NamedMDNode and IVStride using plain delete.</div><div><br></div><div>Please note this shouldnt be released as its incomplete i.e. specializations </div><div>for iplist traits are missing. Plus I would suggest to hide destructors on Value-derived </div>
<div>classes in protected parts of relevant interfaces to prohibit direct delete/destructor calls.</div><div><br></div><div>Hope this one is more suitable for review.<br><br></div><div>Best regards,</div><div><br><div class="gmail_quote">
On Fri, Feb 18, 2011 at 1:15 AM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@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><div></div><div class="h5"><br>
On Feb 16, 2011, at 9:13 PM, pawel kunio wrote:<br>
<br>
> Hello,<br>
> In a meantime of preparing 2 tests for PR9067, I came with my 2nd and hopefully now more<br>
> successful attempt at now-infamous PR889 devirtualize Value destructor.<br>
><br>
> Please find patches for llvm and clang attached to this mail. As I can see from mingw build<br>
> environment, it will need moving PseudoSourceValue.cpp from lib/CodeGen to lib/VMCore<br>
> after applying patch (seems not to be required on vc build env, as order of libraries given<br>
> to linker is not meaningful there).<br>
><br>
> Please note that destructors have been moved into protected part of interface as well as<br>
> empty destructors were implemented for all Value-derived classes to help in catching all<br>
> destructions.<br>
<br>
</div></div>Hi Pawel,<br>
<br>
Thank you for working on this!  Unfortunately, this patch is way too monolithic to review like this though, could you split it out into a series of obvious changes?  Doug recently "devirtualized" the clang decl hierarchy by devirtualizing one method at a time, which worked really well.<br>

<font color="#888888"><br>
-Chris<br>
<br>
</font></blockquote></div><br></div>