<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<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);">
<p style="color:rgb(32, 31, 30);background-color:rgb(255, 255, 255);font-size:11pt;font-family:Calibri, sans-serif;margin:0px">
<br>
</p>
Hi Paul,</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);">
Thanks for your response.</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);">
I also think that "inlined function without abstract origin" could be better stats.</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);">
<span style="color:rgb(32, 31, 30);font-family:Calibri, sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important">>I don’t *</span><b style="color:rgb(32, 31, 30);font-family:Calibri, sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255)">think</b><span style="color:rgb(32, 31, 30);font-family:Calibri, sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important">*
 we ever emit an inlined_subroutine without an abstract origin? <span style="background-color:rgb(255, 255, 255);display:inline !important"><span> </span>If we want to make it an assertion on the emission side, that would be fine.  In fact, now that we omit
 DW_TAG_formal_parameter where the parameter has been optimized away, it’s probably a good idea to have an assertion like that.</span></span><br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="color:rgb(32, 31, 30);font-family:Calibri, sans-serif;font-size:14.6667px;background-color:rgb(255, 255, 255);display:inline !important"><span style="background-color:rgb(255, 255, 255);display:inline !important"><br>
</span></span></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Sure, thanks. I am not sure either whether we emit such `inlined_subroutine`, but we can make an assertion within the AsmPrinter, and to see if there is a situation like that.</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);">
Best regards,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Djordje</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="background-color:rgb(255, 255, 255);display:inline !important"><span> </span></span></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> paul.robinson@sony.com <paul.robinson@sony.com><br>
<b>Sent:</b> Wednesday, April 28, 2021 5:02 PM<br>
<b>To:</b> Djordje Todorovic <Djordje.Todorovic@syrmia.com><br>
<b>Cc:</b> asowda@cisco.com <asowda@cisco.com>; llvm-dev@lists.llvm.org <llvm-dev@lists.llvm.org><br>
<b>Subject:</b> RE: [llvm-dev] llvm-dwarfdump stats for inlined functions</font>
<div> </div>
</div>
<style>
<!--
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:"Segoe UI"}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:link, span.x_MsoHyperlink
        {color:blue;
        text-decoration:underline}
span.x_EmailStyle19
        {font-family:"Calibri",sans-serif;
        color:windowtext}
.x_MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
div.x_WordSection1
        {}
-->
</style>
<div lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="x_WordSection1">
<p class="x_MsoNormal">Pedantically, DW_AT_abstract_origin is not required on a DW_TAG_inlined_subroutine; the DWARF spec says a concrete instance “may” omit attributes not specific to that instance, in which case there will be an abstract origin that will
 have those attributes.  It then goes on to point out that declaration coordinates (DW_AT_decl_[file,line,column]) are for the declaration, not the inlining site, which makes them good candidates for hoisting to the abstract origin.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">That is, DW_AT_abstract_origin is a way to optimize for size; it isn’t mandatory.  So, I think llvm-dwarfdump is correct to allow it.  I might prefer that “inlined functions without abstract origin” be what’s called out separately, rather
 than the “with” case, as the “without” cases represent a likely opportunity for size reduction.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">I don’t *<b>think</b>* we ever emit an inlined_subroutine without an abstract origin?  If we want to make it an assertion on the emission side, that would be fine.  In fact, now that we omit DW_TAG_formal_parameter where the parameter
 has been optimized away, it’s probably a good idea to have an assertion like that.</p>
<p class="x_MsoNormal">--paulr</p>
<p class="x_MsoNormal"> </p>
<div style="border:none; border-left:solid blue 1.5pt; padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none; border-top:solid #E1E1E1 1.0pt; padding:3.0pt 0in 0in 0in">
<p class="x_MsoNormal"><b>From:</b> llvm-dev <llvm-dev-bounces@lists.llvm.org> <b>
On Behalf Of </b>Djordje Todorovic via llvm-dev<br>
<b>Sent:</b> Wednesday, April 28, 2021 7:12 AM<br>
<b>To:</b> llvm-dev <llvm-dev@lists.llvm.org><br>
<b>Cc:</b> asowda@cisco.com<br>
<b>Subject:</b> [llvm-dev] llvm-dwarfdump stats for inlined functions</p>
</div>
</div>
<p class="x_MsoNormal"> </p>
<div>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">Hi, </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black"> </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">As discussed on the
<a href="https://urldefense.com/v3/__https:/reviews.llvm.org/D101025__;!!JmoZiZGBv3RvKRSx!p1JI3vREt1U9y0e7eU5KzIYOZy_bS-TM7CS1N8x6VtUXLtdwkALSba9mVadBYExR-Q$">
https://reviews.llvm.org/D101025</a>, we have noticed that there are two different stat categories for inlined functions when using `llvm-dwarfdump –statistics`: </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; text-indent:.5in; line-height:106%">
<span style="color:black"># inlined functions </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; text-indent:.5in; line-height:106%">
<span style="color:black"># inlined functions with abstract origin </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">and it was introduced after the
</span><b><span lang="EN-GB" style="font-size:10.5pt; line-height:106%; font-family:"Segoe UI",sans-serif; color:#464C5C; background:#ECEEF4">D58849</span><span style="color:black">.
</span></b><span style="color:black">We were wondering if there is a particular motivation of doing so.</span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black"> </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">Having an inlined_subroutine DIE with no abstract_origin attribute does not have so many benefits, so it might be better if we have an assertion/error (e.g., in the
 AsmPrinter) when we face such situation (or just to avoid dumping it into the final DWARF).</span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black"> </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">Any thoughts? </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black"> </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">Best regards, </span></p>
<p class="x_MsoNormal" style="margin-bottom:8.0pt; line-height:106%"><span style="color:black">Djordje </span></p>
<p class="x_MsoNormal"><span style="font-size:12.0pt; color:black"> </span></p>
</div>
</div>
</div>
</div>
</body>
</html>