<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Menlo;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Arsen, we are beyond what I understand about how metadata operates.  Maybe Adrian or David knows.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Arsen Hakobyan [mailto:hakobyan.ars@gmail.com]
<br>
<b>Sent:</b> Friday, January 12, 2018 12:16 PM<br>
<b>To:</b> Robinson, Paul<br>
<b>Cc:</b> llvm-dev@lists.llvm.org; David Blaikie<br>
<b>Subject:</b> Re: [llvm-dev] StripDeadDebugInfo for static inline functions.<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Just one update:<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">the function causing the segmentation fault is the following:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 359
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#34BC26">void</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"> DwarfDebug::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) {<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 360
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  assert(Scope && Scope->getScopeNode());<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 361
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  assert(Scope->isAbstractScope());<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 362
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  assert(!Scope->getInlinedAt());<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 363 <o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 364
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  </span>
<span style="font-size:8.5pt;font-family:"Menlo","serif";color:#34BC26">const</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"> MDNode *SP = Scope->getScopeNode();<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 365 <o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 366
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  ProcessedSPNodes.insert(SP);<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 367 <o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 368
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  </span>
<span style="font-size:8.5pt;font-family:"Menlo","serif";color:#5230E1">// Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 369
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  </span>
<span style="font-size:8.5pt;font-family:"Menlo","serif";color:#5230E1">// was inlined from another compile unit.<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 370
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  </span>
<span style="font-size:8.5pt;font-family:"Menlo","serif";color:#34BC26">auto</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"> &CU = SPMap[SP];<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 371
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  forBothCUs(*CU, [&](DwarfCompileUnit &CU) {<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 372
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">    CU.constructAbstractSubprogramScopeDIE(Scope);<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 373
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  });<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"> 374
</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">}</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:#CD7923"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Here I checked that "</span><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">SPMap.<span style="background:#00A6B3">lookup</span>(Scope->getScopeNode());" returns null. If the transformation
 does right things then probably there is other issue and SPMap[SP] for inlined function should find the main CompileUnit anyway.  What do you think about this?</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">Regards,</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">Arsen</span><o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Sat, Jan 13, 2018 at 12:11 AM, Arsen Hakobyan <<a href="mailto:hakobyan.ars@gmail.com" target="_blank">hakobyan.ars@gmail.com</a>> wrote:<o:p></o:p></p>
<div>
<p class="MsoNormal">Hi Paul, <o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks for your response.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Let me actually post more details visualizing my case. Assuming that can help.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">so the IR before the opt tool is running is:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">; Function Attrs: nounwind<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">define i16 @main() #0 !dbg !13 {<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">entry:<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  %retval = alloca i16, align 1<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">    ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal;min-height:13px"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">; Function Attrs: inlinehint nounwind<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">define internal void @delay(i16 %d) #4 !dbg !69 {<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">entry:<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  %d.addr = alloca i16, align 1<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  %i = alloca i16, align 1<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal;min-height:13px"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!<a href="http://llvm.dbg.cu" target="_blank">llvm.dbg.cu</a> = !{!0}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!llvm.module.flags = !{!84, !85}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!llvm.ident = !{!86}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 Revision 72230", isOptimized:
 true, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !3, subprograms: !12, globals: !73)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!12 = !{!13, !54, !57, !60, !61, !62, !65, !66, !67, !68, !69}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 15, type: !15, isLocal: false, isDefinition: true,
 scopeLine: 15, isOptimized: true, variables: !17)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!54 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!57 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!60 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!61 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!62 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!65 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!66 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!67 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!68 = distinct !DISubprogram(name: ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!69 = distinct !DISubprogram(name: "delay", scope: !14, file: !14, line: 9, type: !55, isLocal: true, isDefinition: true, scopeLine:
 9, flags: DIFlagPrototyped, isOptimized: true, variables: !70)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!70 = !{!71, !72}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!71 = !DILocalVariable(name: "d", arg: 1, scope: !69, file: !14, line: 9, type: !11)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!72 = !DILocalVariable(name: "i", scope: !69, file: !14, line: 9, type: !11)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The IR after opt is:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">; Function Attrs: nounwind<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">define i16 @main() #0 !dbg !13 {<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">entry:<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">  ...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">}   <o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal;min-height:13px"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!<a href="http://llvm.dbg.cu" target="_blank">llvm.dbg.cu</a> = !{!0}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!llvm.module.flags = !{!64, !65}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!llvm.ident = !{!66} <o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal;min-height:13px"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black"><o:p> </o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 3.8.0 Revision 72230", isOptimized:
 true, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !3, subprograms: !12, globals: !54)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!12 = !{!13}<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!13 = distinct !DISubprogram(name: "main", scope: !14, file: !14, line: 15, type: !15, isLocal: false, isDefinition: true,
 scopeLine: 15, isOptimized: true, variables: !17)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!14 = !DIFile(filename: "main.c", directory: "path_to_directory")<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!68 = !DILocalVariable(name: "d", arg: 1, scope: !69, file: !14, line: 9, type: !11)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!69 = distinct !DISubprogram(name: "delay", scope: !14, file: !14, line: 9, type: !70, isLocal: true, isDefinition: true, scopeLine:
 9, flags: DIFlagPrototyped, isOptimized: true, variables: !72)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">...<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">!73 = !DILocalVariable(name: "i", scope: !69, file: !14, line: 9, type: !11)<o:p></o:p></span></p>
<p style="margin:0in;margin-bottom:.0001pt;font-stretch:normal"><span style="font-size:8.5pt;font-family:"Menlo","serif";color:black">... <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I checked the StripSymbol.cpp file and there is no difference between version I am using (from clang 3.8) and current (6.0.0) version.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">As you can see the !12 node does not contain reference to !69 after optimizations which I think is incorrect. I assume that !69 has not been removed because there are two nodes (!68 and !73) referenced to it as the scope. But that should
 force the transformations to not remove the link from !12. Is it right?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thank you very much.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888">Arsen<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:#888888"><o:p> </o:p></span></p>
</div>
</div>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Jan 12, 2018 at 10:21 PM, Robinson, Paul <<a href="mailto:paul.robinson@sony.com" target="_blank">paul.robinson@sony.com</a>> wrote:<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I'm not as familiar with all the ins and outs of metadata as maybe I should be, but ultimately the
 inlined function should have a DWARF description contained within the description of the caller (which is why you're seeing the call to constructAbstractSubprogramScopeDIE).  That suggests that the DISubprogram for the inlined function ought to remain, and
 its scope should be the DICompileUnit.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">--paulr</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="m_-1677069743473896569_m_600397516357848"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span></a><o:p></o:p></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 #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> llvm-dev [mailto:<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>]
<b>On Behalf Of </b>Arsen Hakobyan via llvm-dev<br>
<b>Sent:</b> Friday, January 12, 2018 1:57 AM<br>
<b>To:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> [llvm-dev] StripDeadDebugInfo for static inline functions.</span><o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi all,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I would like to understand the strip-dead-debug-info transformation. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">In my test case there is a static inline function with two local variables.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">It appears that the function is already inlined before strip-dead-debug-info starts its work. As a result the DICompileUnit is cleaned and its subprograms list has no reference
 to the DISubprogram for the inlined function, but as there is reference from the DILocalVariables to the DISubprogram it remains (IMHO).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">This caused to a segmentation fault while running llc on the optimized IR file at function "constructAbstractSubprogramScopeDIE" in file DwarfDebug.cpp because the scope of the
 DISubprogram is null (I assume it should be the DICompileUnit).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">So I would like to know what would be the correct solution for this issue: Update optimization to not remove reference from the subprograms list, or to skip finding scope in llc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Any help is highly appreciated.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Arsen<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">--
<o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#444444">If it's not fun you're not doing it right -- Fran Tarkenton</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><span style="color:#444444">If it's not fun you're not doing it right -- Fran Tarkenton</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><br>
<br clear="all">
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal">-- <o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><span style="color:#444444">If it's not fun you're not doing it right -- Fran Tarkenton</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>