<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
The motivation for this work was getting this working ThinLTO, which I know very little about that, so that's why I recommended getting buy in from ThinLTO folks for the general direction.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
This general direction is that we change the cost-model, import more functions as a result, so that we can do more transformations. The questions that need answering are: what is this going to cost in compile-times, and what is the performance benefit?</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
To have a more efficient discussion on this, I think it is best if you prototype your proposal. This makes things more concrete and also allows to get some first costs and benefits of the approach to test the whole idea. Without this, it all just remains a
 bit abstract.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;color:rgb(32, 31, 30);caret-color:rgb(32, 31, 30);clear:both">
<span style="margin:0px;font-family:Tahoma, Arial, STHeiti, SimSun;font-size:14px;color:black"><span style="margin: 0px; background-color: rgb(255, 255, 255); display: inline; font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Regarding
</span><span style="margin:0px;background-color:white;display:inline"><a href="https://reviews.llvm.org/D105524" target="_blank" rel="noopener noreferrer" data-auth="NotApplicable" data-linkindex="0" style="margin:0px">https://reviews.llvm.org/D105524</a></span><span style="margin: 0px; background-color: rgb(255, 255, 255); display: inline; font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">,
 yes </span></span><span style="font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">it is NFC and harmless, but it is not important. I.e., it is trivial and I'm sure we can get it
 approved in no-time, but more important are the bigger questions that needs answers first. It's also better to avoid unnecessary churn if things turns out to be different.</span></div>
<div style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;color:rgb(32, 31, 30);caret-color:rgb(32, 31, 30);clear:both">
<span style="font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);"><br>
</span></div>
<div style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;color:rgb(32, 31, 30);caret-color:rgb(32, 31, 30);clear:both">
<span style="font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">My 2 cents.</span></div>
<div style="margin:0px;font-family:"Segoe UI", "Segoe UI Web (West European)", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;font-size:15px;color:rgb(32, 31, 30);caret-color:rgb(32, 31, 30);clear:both">
<span style="font-family: calibri, arial, helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Sjoerd.</span></div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> on behalf of chuanqi.xcq via llvm-dev <llvm-dev@lists.llvm.org><br>
<b>Sent:</b> 26 July 2021 07:30<br>
<b>To:</b> llvm-dev <llvm-dev@lists.llvm.org>; Florian Hahn <florian_hahn@apple.com><br>
<b>Subject:</b> Re: [llvm-dev] [ThinLTO] Import functions to enable function specialization in ThinLTO</font>
<div> </div>
</div>
<div>
<div class="x___aliyun_email_body_block">
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">gentle ping~</span></div>
<blockquote style="margin-right:0; margin-top:0; margin-bottom:0">
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">------------------------------------------------------------------</span></div>
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">From:llvm-dev <llvm-dev@lists.llvm.org></span></div>
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Send Time:2021年7月15日(星期四) 17:23</span></div>
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">To:llvm-dev <llvm-dev@lists.llvm.org>; Florian Hahn <florian_hahn@apple.com></span></div>
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Subject:Re: [llvm-dev] [ThinLTO] Import functions to enable function specialization in ThinLTO</span></div>
<div style="clear:both"><span style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><br>
</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Hi <span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Florian,</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Thanks
 for looking into this!</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">> I’d
 try to summarise the heuristics you propose to add, rather than focusing on the implementation details to start with.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both">Thanks. I agree with it. The direction are more important than details.</div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both">> <span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">You
 should also be able to collect and provide date on the effectiveness of those heuristics, like the number of additional functions imported, compared to the number of additionally specialised  functions.</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">If
 I understand right, you mean that I could collect these numbers after we summarised the heuristics we decide to use instead of collecting now.</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Collecting
 the numbers may not make sense to me. Since I think we should do statistics after we decided the direction.</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">> Also,
 the scope/focus on function specialisation seems a bit narrow for substantially increasing the number of imported functions.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">I
 think there are two apsects.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">-
 It depends on how much we could get from function specialization.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">-
 It depends the cost model to import more functions.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">For
 the first aspects, I think function specialization is potential because ipa-cp plays an important role in gcc.
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">And
 the interprocedural value range propogation based on function specialization seems very potential to me.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">That's
 the reason that I want to look into function specialization.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">For
 the second aspects, I think we need more time to tuning it. Or in another words, we need to decide the heuristics first.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">I
 know it's hard to **decide**  heuristics without measuring. But the work process  I imaged maybe:</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">```</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Get
 a set of heuristics -> Tuning the cost model to decrease the overhead -> if succed, we got it -> else go back to the first step.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">```</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">> Do
 you think the proposed heuristics would also benefit other optimisations, like regular IPSCCP?</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Yes,
 I think regular IPSCCP could benefit from the proposed heuristics. Out of curiousty, I guess we could replace regular IPSCCP</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">once
 the function specialization pass is strong enough. What's your opinion?</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Finally,
 let me clarify the intention of this mail. I don't ask to get a solution right now. I know it is hard for every one.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">The
 intention is that if we could get a consensus that it is valuable that importing functions by heuristics for function specialization.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">If
 yes, we could continue the review process for <a href="https://reviews.llvm.org/D105524" target="_blank">https://reviews.llvm.org/D105524</a>, which extract the analysis part from function
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">specialization
 pass. I believe this patch should be NFC and harmless.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Of
 course, it could much much better that we could discuss the heuristics and the cost model.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Let
 me introduce the heuristics and the cost model I proposed simply.</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">The heuristics
 are:</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"></span></span>
<ul class="x_remarkup-list x___aliyun_node_has_color" style="font-style:normal; font-variant-caps:normal; font-weight:normal; text-indent:.0px; text-transform:none; text-decoration:none; margin:12.0px .0px 12.0px 30.0px; padding:.0px; border:.0px; list-style:disc; color:#000000; font-family:Segoe UI,Segoe UI Emoji,Segoe UI Symbol,Lato,Helvetica Neue,Helvetica,Arial,sans-serif; font-size:13.0px; text-align:left">
<li class="x_remarkup-list-item" style="margin:.0px; padding:.0px; border:.0px; line-height:1.7em">
Specialize Function Cost. An unsigned number, which is an estimation for the cost to clone one function.</li><li class="x_remarkup-list-item" style="margin:.0px; padding:.0px; border:.0px; line-height:1.7em">
Base Bonus for specializing specific argument. A map from ArgNo to the corresponding base bonus. Here the base bonus means the bonus we could calculate by visiting the function body itself only (in other words, doesn't need to see the call site).</li><li class="x_remarkup-list-item" style="margin:.0px; padding:.0px; border:.0px; line-height:1.7em">
ArgUsage. A map from ArgNo to the extra bonus for each call site. The extra bonus means the bonus we could calculate for specific call site. For example, if we passed a function in the call, we could calculate the possibility that the function could get inlined
 at the specific call site only.</li></ul>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">And the cost model are the same with function specialization pass right now and we could adjust it in the future.</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">The first one `<span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Segoe UI,Segoe UI Emoji,Segoe UI Symbol,Lato,Helvetica Neue,Helvetica,Arial,sans-serif; font-size:13.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:left; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Specialize
 Function Cost</span>` is the number of instruction in a function multiplies a factor.</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">The second one `Base Bonus` is calculated by how many possible loads for this argument and its alias now.
</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">I plan to add more situations for example:</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">```</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">int foo(bool cond) {</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   if (cond) { // We could get more base bonus by the average instruction count in the branches.</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   } else {</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   }</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">}</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">```</span></div>
</div>
<div style="clear:both">
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Or</span></div>
</div>
<div style="clear:both">
<div style="clear:both">
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">```</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">int
 foo(int cond) {</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   if
 (cond > 10) { // We could get the condition if cond is constant, so we could get more bonus.</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   }
 else {</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">   }</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">}</span></div>
</div>
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">```</span></div>
</div>
</div>
</div>
<div style="clear:both">
<div style="clear:both">
<div class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; clear:both">
<div style="margin:.0px; padding:.0px; border:.0px; outline:.0px; clear:both"><span class="x___aliyun_node_has_color" style="margin:.0px; padding:.0px; border:.0px; outline:.0px; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"></span></div>
</div>
<span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">The third one `<span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Segoe UI,Segoe UI Emoji,Segoe UI Symbol,Lato,Helvetica Neue,Helvetica,Arial,sans-serif; font-size:13.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:left; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">ArgUsage</span>`,
 which describes the infomation in callsites and we could use it to calculate the extra bonus.</span></div>
</div>
<div style="clear:both">
<div style="clear:both">Now it only contains the instruction count if the corresponding parameter is a function. Then we could get extra bonus</div>
</div>
<div style="clear:both">
<div style="clear:both">from the potential inlining.</div>
</div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"></span></span></div>
<div style="clear:both"><br>
</div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Thanks,</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Chuanqi</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><span class="x___aliyun_node_has_color x___aliyun_node_has_bgcolor" style="color:#000000; font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br>
</span></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">------------------------------------------------------------------</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">From:Florian Hahn <florian_hahn@apple.com></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Send Time:2021年7月14日(星期三) 19:39</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">To:chuanqi.xcq <yedeng.yd@linux.alibaba.com>; llvm-dev <llvm-dev@lists.llvm.org></span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000">Subject:Re: [llvm-dev] [ThinLTO] Import functions to enable function specialization in ThinLTO</span></div>
<div style="clear:both"><span class="x___aliyun_node_has_color" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; color:#000000"><br>
</span></div>
<br class="">
<div><br class="">
<div class="">On 14 Jul 2021, at 09:38, chuanqi.xcq via llvm-dev <<a class="" href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div>
<br class="x_Apple-interchange-newline">
<div class="">
<div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px">Hi all,</span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><br class="">
</span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px">Before I sent a mail to ask the opinion to how to import functions to enable function specialization in ThinLTO.</span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px">Maybe the question is too empty or the <span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">function
 specialization pass didn't get checked in at that time. So I didn't get responses.</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br class="">
</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Then
 now, the function specialization passes got checked in and I also made it a version in the downstream.</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">So
 I tried to update my patches. The first patch is to extract the analysis part of function specialization as an analysis pass.</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">(<a class="" href="https://reviews.llvm.org/D105524" target="_blank">https://reviews.llvm.org/D105524</a>).</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br class="">
</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">And
<span class="x___aliyun_at_block_1626247728691 x___aliyun_at_block_" title="sjoerd.meijer@arm.com" style="border:none; margin:0 2.0px 0 0; background-color:transparent; color:#0284c0">
@sjoerd.meijer</span> suggests that it may be better that I ping this thread with more infomation to make us confident we are</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">in
 the right direction.</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline"><br class="">
</span></span></div>
<div class="" style="clear:both"><span class="" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px"><span class="x___aliyun_node_has_bgcolor x___aliyun_node_has_bgcolor" style="font-family:Tahoma,Arial,STHeiti,SimSun; font-size:14.0px; font-style:normal; font-variant-caps:normal; font-weight:normal; text-align:start; text-indent:.0px; text-transform:none; background-color:#ffffff; text-decoration:none; float:none; display:inline">Then
 I updated this one: <a class="" href="https://reviews.llvm.org/D105966" target="_blank">https://reviews.llvm.org/D105966</a>, which contains the detailed description and numbers.</span></span></div>
<div class="" style="clear:both">Response in this thread or in that review page is fine to me either.</div>
<div class="" style="clear:both"><br class="">
</div>
</div>
</div>
<br class="">
</div>
<div><br class="">
</div>
<div>I’d try to summarise the heuristics you propose to add, rather than focusing on the implementation details to start with. I think it might be helpful to motivate a set of heuristics first. You should also be able to collect and provide date on the effectiveness
 of those heuristics, like the number of additional functions imported, compared to the number of additionally specialised  functions.</div>
<div><br class="">
</div>
<div>Also, the scope/focus on function specialisation seems a bit narrow for substantially increasing the number of imported functions. Do you think the proposed heuristics would also benefit other optimisations, like regular IPSCCP?</div>
<div><br class="">
</div>
<div>Cheers,</div>
<div>Florian</div>
<br class="">
<div><br>
</div>
</blockquote>
</div>
</div>
</body>
</html>