<div dir="ltr"><div>Teaching the back end about size optimization sounds great, even without the exciting work on MachineOutliner. It would strip some nasty hacks from an out of tree back end that cares about code size :)<br><br></div>Thank you<br><div><div><div><div><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The first patch is one that teaches the backend about size optimization levels. This is comparable to what's done in the inliner. Today, the only way to tell if something is optimizing for size is by looking at function attributes. This is fine for function passes, but insufficient for module passes like the MachineOutliner. The function attribute approach forces the outliner to iterate over every function in the module before deciding to take action. If -Oz isn't passed in, then the outliner will not find any functions worth outlining from. This would incur unnecessary compile-time overhead. Thus, we decided the best course of action is to teach the backend about size options.<br>
<br>
The second patch teaches llc to handle -Oz and -Os.<br></blockquote></div><br></div></div></div></div></div></div>