<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><blockquote type="cite" class=""><div text="#000000" bgcolor="#FFFFFF" class="">I don't think this is really the right approach.  With LTO, you can have a mix of functions, some of which are minsize, and some of which are not.  Or with profile info, we might want to outline only cold code (I guess this isn't implemented yet, but potentially future work).  Tying whether we run the outliner to a command-line flag restricts the possible uses; either the entire module gets outlining, or none of it does.<br class=""></div></blockquote></div><div class=""><br class=""></div>I’ve updated the main patch (<a href="https://reviews.llvm.org/D45916" class="">https://reviews.llvm.org/D45916</a>) to use this method instead. It’s a lot cleaner and keeps the changes far more self-contained. This should make it easier to define custom outlining behaviour based off function attributes, target-specific requirements, etc. The other patches have been abandoned because they are no longer required.<div class=""><br class=""></div><div class="">The compile-time overhead should only appear in AArch64 after this patch. It should only incur the 1% overhead if -Oz is passed in. Otherwise, there will be a very small overhead stemming from looping over the functions in the module and checking for the minsize attribute.<br class=""><div class=""><br class=""></div><div class="">I also fixed the -O3 SPEC failure, so I don’t think that there’s anything outstanding left to fix.</div><div class=""><br class=""></div><div class="">- Jessica<div class=""><br class=""></div></div></div></body></html>