<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>
<div></div>
<div><br>
</div>
<div><font style="color:#333333"><i>Sent from my Verizon Wireless 4G LTE DROID</i></font></div>
<div><font style="color:#333333"><i>On Apr 18, 2016 6:48 PM, Xinliang David Li <</i></font><a href="mailto:xinliangli@gmail.com"><font style="color:#333333"><i>xinliangli@gmail.com</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>> On Mon, Apr 18, 2016 at 4:43 PM, Hal Finkel via llvm-dev <</i></font><a href="mailto:llvm-dev@lists.llvm.org"><font style="color:#333333"><i>llvm-dev@lists.llvm.org</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> ________________________________</i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>> From: "Xinliang David Li" <</i></font><a href="mailto:davidxl@google.com"><font style="color:#333333"><i>davidxl@google.com</i></font></a><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>>>> To: "Chandler Carruth" <</i></font><a href="mailto:chandlerc@gmail.com"><font style="color:#333333"><i>chandlerc@gmail.com</i></font></a><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>>>> Cc: "Hal Finkel" <</i></font><a href="mailto:hfinkel@anl.gov"><font style="color:#333333"><i>hfinkel@anl.gov</i></font></a><font style="color:#333333"><i>>, "via llvm-dev" <</i></font><a href="mailto:llvm-dev@lists.llvm.org"><font style="color:#333333"><i>llvm-dev@lists.llvm.org</i></font></a><font style="color:#333333"><i>>,
 "Mehdi Amini" <</i></font><a href="mailto:mehdi.amini@apple.com"><font style="color:#333333"><i>mehdi.amini@apple.com</i></font></a><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>>>> Sent: Monday, April 18, 2016 6:38:32 PM</i></font></div>
<div><font style="color:#333333"><i>>>> Subject: Re: [llvm-dev] Move </i></font><a href="http://InlineCost.cpp"><font style="color:#333333"><i>InlineCost.cpp</i></font></a><font style="color:#333333"><i> out of Analysis?</i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>> On Mon, Apr 18, 2016 at 3:59 PM, Chandler Carruth <</i></font><a href="mailto:chandlerc@gmail.com"><font style="color:#333333"><i>chandlerc@gmail.com</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> On Mon, Apr 18, 2016 at 3:45 PM Xinliang David Li <</i></font><a href="mailto:davidxl@google.com"><font style="color:#333333"><i>davidxl@google.com</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>> On Mon, Apr 18, 2016 at 3:00 PM, Chandler Carruth <</i></font><a href="mailto:chandlerc@gmail.com"><font style="color:#333333"><i>chandlerc@gmail.com</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>> On Mon, Apr 18, 2016 at 2:48 PM Hal Finkel <</i></font><a href="mailto:hfinkel@anl.gov"><font style="color:#333333"><i>hfinkel@anl.gov</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>> ________________________________</i></font></div>
<div><font style="color:#333333"><i>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>> From: "Xinliang David Li" <</i></font><a href="mailto:davidxl@google.com"><font style="color:#333333"><i>davidxl@google.com</i></font></a><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>> On Mon, Apr 18, 2016 at 2:33 PM, Mehdi Amini <</i></font><a href="mailto:mehdi.amini@apple.com"><font style="color:#333333"><i>mehdi.amini@apple.com</i></font></a><font style="color:#333333"><i>> wrote:</i></font></div>
<div><font style="color:#333333"><i>>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>>> In the current case at stake: the issue is that we can't make the Analysis library using anything from the ProfileData library. Conceptually there is a problem IMO.</i></font></div>
<div><font style="color:#333333"><i>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>>> Yes -- this is a very good point.</i></font></div>
<div><font style="color:#333333"><i>>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>>> Independent of anything else, +1.</i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>> The design of ProfileData and reading profile information in the entire middle end had a really fundamental invariant that folks seem to have lost track of:</i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>> Not sure about what you mean by 'lost track of'.</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> I mean that we used to hold to these invariants but I think recently the code has started to not follow them as closely.</i></font></div>
<div><font style="color:#333333"><i>>>>>  </i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>> a) There is exactly *one* way to get at profile information from general analyses and transforms: a dedicated analysis pass that manages access to the profile info.</i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>> This is not the case as of today.</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> Again, my whole comment was that these are no longer being correctly followed.</i></font></div>
<div><font style="color:#333333"><i>>>>>  </i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>   BPI is a dedicated analysis pass to manage branch probability profile information, but this pass is only used in limited situations (e.g, for BFI, profile update in jump-threading etc) -- using it it requires more
 memory as well as incremental update interfaces.  Many transformation passes simply skip it and directly access the meta data in IR.</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> Can you be more specific?</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> BPI and BFI are used in *many* places, and on an initial inspection almost everywhere that accesses MD_prof directly appears to do so in order to *set* or *update* the profile information without doing detailed analysis
 on it. Which seems fine with my outline of the invariants?</i></font></div>
<div><font style="color:#333333"><i>>>>>  </i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>> See my reply to Hal.</i></font></div>
<div><font style="color:#333333"><i>>>>  </i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>>> Now, the original design only accounted for profile information *within* a function body, clearly it needs to be extended to support intraprocedural information.</i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>>> Not sure what you mean.  Profile data in general does not extend to IPA (we will reopen discussion on that soon), but profile summary is 'invariant'/readonly data, which should be available to IPA already.</i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>></i></font></div>
<div><font style="color:#333333"><i>>>>> I don't know what you mean by "invariant" or readonly data here. I think that whether or not the profile information is mutated shouldn't influence the design invariants I described above.</i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>> I do not disagree with this. What I was saying is that the information can be made available to IPA in some form due to its readonly nature.</i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> Can you please clarify what information you view as readonly?</i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>> I actually it is immutable -- i.e, no need for update.</i></font></div>
<div><font style="color:#333333"><i>>  </i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> I can understand function entry counts being readonly,</i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>> Function entry counts are actually mutable -- inlining, cloning etc will need to update the entry count of the callee instance.</i></font></div>
<div><font style="color:#333333"><i><br>
</i></font></div>
<div><font style="color:#333333"><i>Ah, good point.</i></font></div>
<div><font style="color:#333333"><i><br>
</i></font></div>
<div><font style="color:#333333"><i>-Hal</i></font></div>
<div><font style="color:#333333"><i><br>
</i></font></div>
<div><font style="color:#333333"><i>>  </i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> but branch information within a function seems mutable. Is this also what you're talking about?</i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>> Basically  profile summary is program level information which won't be modified after it is created/read .</i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i>> David</i></font></div>
<div><font style="color:#333333"><i>>  </i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>>  -Hal</i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>>> David </i></font></div>
<div><font style="color:#333333"><i>>>></i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> -- </i></font></div>
<div><font style="color:#333333"><i>>> Hal Finkel</i></font></div>
<div><font style="color:#333333"><i>>> Assistant Computational Scientist</i></font></div>
<div><font style="color:#333333"><i>>> Leadership Computing Facility</i></font></div>
<div><font style="color:#333333"><i>>> Argonne National Laboratory</i></font></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>>> _______________________________________________</i></font></div>
<div><font style="color:#333333"><i>>> LLVM Developers mailing list</i></font></div>
<div><font style="color:#333333"><i>>> </i></font><a href="mailto:llvm-dev@lists.llvm.org"><font style="color:#333333"><i>llvm-dev@lists.llvm.org</i></font></a></div>
<div><font style="color:#333333"><i>>> </i></font><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"><font style="color:#333333"><i>http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</i></font></a></div>
<div><font style="color:#333333"><i>>></i></font></div>
<div><font style="color:#333333"><i>></i></font></div>
<div><font style="color:#333333"><i><br>
</i></font></div>
</div>
</body>
</html>