<div dir="ltr">Hi Paul,<div><br></div><div>I took it rather as a set of suggested topics depending on who is interested rather than a proposed agenda.</div><div><br></div><div>-eric</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 23, 2020 at 7:20 AM Robinson, Paul <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_8807783380970029859WordSection1">
<p class="MsoNormal">Hi Eric & Orlando,<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">It’s great to see interest in a lot of different aspects of debug info. At the same time, I’m concerned about a risk to making the topic so broad that we don’t have time to get through all the things people want to get through.  I’m thinking
 there’s a different way to slice the topics, hopefully without much overlap, but that will allow a bit more focus.  No doubt a lot of the same people would be interested in multiple slices, but by limiting the scope of each conversation I’m hoping we’ll get
 more accomplished.  I daresay a lot of people interested in debug-info quality in general might totally tune out a DWARF-nerd discussion
<span style="font-family:"Segoe UI Emoji",sans-serif">😊</span> <u></u><u></u></p>
<p class="MsoNormal">The slicing could be something like this:<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Getting LLVM to do a better job of tracking info internally, so what gets emitted in the end is more representative of the original program. This should improve the debugging experience
 by letting the debugger do a better job of mapping the executing program to the original source, because the data it works with is more accurate/complete.<u></u><u></u></li><ol style="margin-top:0in" start="1" type="a">
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">This is basically about IR/Metadata handling and representation, although it might leak into things like the “is_stmt” flag, and doing better with “prologue_end,” which are currently
 handled by AsmPrinter.<u></u><u></u></li><li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Better handling of induction variables, entry-values, variables with multiple locations, etc.<u></u><u></u></li></ol>
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Changes to optimization passes/pipelines and codegen, to avoid borking the source-location and value/variable tracking; again this should improve the debugging experience by letting
 the debugger do a better job of mapping the executing program back to the original source, because that mapping is simpler.<u></u><u></u></li><ol style="margin-top:0in" start="1" type="a">
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">This is basically about IR/MIR transforms, and is where an Og/O1 kind of topic would fit.<u></u><u></u></li><li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Also things like extended lifetimes, limiting code motion/duplication, etc.<u></u><u></u></li></ol>
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Changing the DWARF spec itself to improve the completeness and efficiency of the information it contains.  This should improve the debugging experience by making the DWARF itself a
 richer information source, to the extent that it can describe more of what happened to the original program; also hopefully any efficiency improvements will allow the debugger to be more responsive.<u></u><u></u></li><ol style="margin-top:0in" start="1" type="a">
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">This is obviously about DWARF itself, although to some extent how we go about generating it.<u></u><u></u></li><li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Take better advantage of ranges and the .debug_addr table.  dblaikie and clayborg have put up ideas about this.<u></u><u></u></li><li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Figure out a way to allow tracking multiple source locations for an individual instruction.  Right now we mostly give up and set locations to line-0 when this happens.<u></u><u></u></li><li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Understand the competing needs of profiling and debugging consumers, and see what might be doable there.  (Although this might be tough enough to be its own topic.)<u></u><u></u></li></ol>
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">Debug-info testing/validation.  How do we decide what is “correct”? 
<u></u><u></u></li><ol style="margin-top:0in" start="1" type="a">
<li class="gmail-m_8807783380970029859MsoListParagraph" style="margin-left:0in">What are the tools we have, what are they good/bad at, what’s missing?<u></u><u></u></li></ol>
</ol>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">I hear that round-tables can be proposed for either ~half hour or ~full hour, so with more focused topics we might rather have shorter sessions? 
<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
<p class="MsoNormal">--paulr<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div style="border-top:none;border-right:none;border-bottom:none;border-left:1.5pt solid blue;padding:0in 0in 0in 4pt">
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org" target="_blank">llvm-dev-bounces@lists.llvm.org</a>> <b>On Behalf Of
</b>Eric Christopher via llvm-dev<br>
<b>Sent:</b> Tuesday, September 22, 2020 2:42 PM<br>
<b>To:</b> Cazalet-Hyams, Orlando <<a href="mailto:orlando.hyams@sony.com" target="_blank">orlando.hyams@sony.com</a>>; LLDB Dev <<a href="mailto:lldb-dev@lists.llvm.org" target="_blank">lldb-dev@lists.llvm.org</a>><br>
<b>Cc:</b> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> Re: [llvm-dev] Optimised-code debugging experience Round Table<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal"><a href="mailto:lldb-dev@lists.llvm.org" target="_blank">+LLDB Dev</a> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<p class="MsoNormal">I'll sign up. :)<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">My particular interests are:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">- Og (and O1 as Og)<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- Correctness testing tools<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Past that the rest of your list seems quite specific, but the overall "line tables" and "variable locations" are important.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Relatedly we have a number of DWARF committee members in llvm and another possible discussion area could be: "what extensions do debug info consumers think should happen to make dwarf a better input into debugging".<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">-eric<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Tue, Sep 22, 2020 at 8:43 AM Cazalet-Hyams, Orlando via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span lang="EN-GB">Hi all,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">I haven't seen a proposal for an optimised-code debugging experience Round Table yet so here goes!<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Please let me know if you are interested by emailing me at:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">   
<a href="mailto:orlando.hyams@sony.com" target="_blank">orlando.hyams@sony.com</a><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">   
<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Below is a non-exhaustive list of possible topics. Feel free to include any preferences and<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">suggestions in your response.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">  a. Line tables:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    1. Can we fix is_stmt?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    2. Is prologue_end reliable?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    3. General stepping behaviour/quality.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">  b. Variable locations:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    1. The state of DW_OP_entry_values in llvm.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    2. The state of the instruction-referencing DBG_VALUE work.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    3. The state of multi-register DWARF expressions in llvm.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    4. The possibility of salvaging out-of-liveness values using the 3 projects mentioned above.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    5. Floating point debug-info quality in llvm.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    6. Loop induction variable locations.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">  c. Testing debug-info:<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    1. Variable correctness testing tools.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">    2. Location coverage testing tools.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">  d. The state of -Og.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Please respond before Friday (25th) if you are interested as that is the submission deadline.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Thanks,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB">Orlando<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://urldefense.com/v3/__https:/lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev__;!!JmoZiZGBv3RvKRSx!qZNIykNGKyisLnvZ4ZEA_BQPbabOTQucziiEgm1DmJ154Z_DBQc8k6R5JENTM2Ewyg$" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div>
</div>

</blockquote></div>