<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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
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-GB" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi everyone,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you to everyone who attended the optimised code debugging experience Round Table. Here is a summary of the discussion:<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal">Testing & validation<o:p></o:p></p>
<p class="MsoNormal">* debugify:<o:p></o:p></p>
<p class="MsoNormal">   * debugify extension Djordje has been working on uses existing (instead of synthetic) debug-info.<o:p></o:p></p>
<p class="MsoNormal">   * Potential for an extension which helps find problems with debug intrinsic handling.<o:p></o:p></p>
<p class="MsoNormal">   * Is debugify appropriate for CI regression testing? (Seems not).<o:p></o:p></p>
<p class="MsoNormal">* dexter:<o:p></o:p></p>
<p class="MsoNormal">   * Concerns raised about scalability - already being addressed.<o:p></o:p></p>
<p class="MsoNormal">   * Using dexter to look at stack backtraces.<o:p></o:p></p>
<p class="MsoNormal">   * Getting LNT metrics for dexter tests upstream might be useful - needs evaluating.<o:p></o:p></p>
<p class="MsoNormal">   * Upstream test suite is small, Phillip P. mentions we are sitting on a bunch downstream.<o:p></o:p></p>
<p class="MsoNormal">* llvm-diva<o:p></o:p></p>
<p class="MsoNormal">   * New tool created by Carlos for providing a higher level / semantic view of debug-info. Needs renaming.<o:p></o:p></p>
<p class="MsoNormal">* Other:<o:p></o:p></p>
<p class="MsoNormal">   * gdb test suite running on llvm. Not necessarily super useful.<o:p></o:p></p>
<p class="MsoNormal">   * PLDI paper [1] implements automated validation pipeline on synthesised programs. Scalability concerns again.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Og<o:p></o:p></p>
<p class="MsoNormal">* O1 as Og. Proposed by Eric a while ago (see mails/RFC).<o:p></o:p></p>
<p class="MsoNormal">* Main goal: Somewhat optimised code with quick build and useful debug-info.<o:p></o:p></p>
<p class="MsoNormal">* Remove abstraction penalties but leave things as debuggable as possible.<o:p></o:p></p>
<p class="MsoNormal">* Give all locals stack homes? Runtime performance implication needs investigation.<o:p></o:p></p>
<p class="MsoNormal">* The analysis/testing has developed further since the last discussions but nothing put upstream yet.<o:p></o:p></p>
<p class="MsoNormal">* Contributors welcome - discuss with Eric.<o:p></o:p></p>
<p class="MsoNormal">* Lifetime extension? Prefer to fix/improve variable location tracking.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Stepping behaviour<o:p></o:p></p>
<p class="MsoNormal">* is_stmt & program breakpoints:<o:p></o:p></p>
<p class="MsoNormal">   * There is a lot of interest in, and agreement for, changing how llvm identifies useful program breakpoints (DWARF is_stmt flag).<o:p></o:p></p>
<p class="MsoNormal">   * lldb and Sony's debugger ignore is_stmt currently.<br>
   * "Statement" at the language level is definitely too coarse. Expressions might be a useful as a start.<o:p></o:p></p>
<p class="MsoNormal">   * Caroline T. suggests breakpoints (is_stmt) should be on all user visible state changes [2].<o:p></o:p></p>
<p class="MsoNormal">* prologue_end can be misleading:<o:p></o:p></p>
<p class="MsoNormal">   * Difficult because of shrink wrapping etc.<o:p></o:p></p>
<p class="MsoNormal">   * Some debuggers use it, some don't.<o:p></o:p></p>
<p class="MsoNormal">* We may need to guard changes in this area behind a flag to avoid breaking compatibility with consumers.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Useful links captured from the Zoom chat:<br>
<br>
<o:p></o:p></p>
<p class="MsoNormal">Paper on work done for OpenVMS debugger in the 1990s.<br>
Ronald F. Brender, Jeffrey E. Nelson, Mark E. Arsenault<o:p></o:p></p>
<p class="MsoNormal"><a href="https://www.semanticscholar.org/paper/Debugging-Optimized-Code%3A-Concepts-and-on-DIGITAL-Brender-Nelson/b94d517a8f5780db9cbca43a4b7870bec4d13f52">https://www.semanticscholar.org/paper/Debugging-Optimized-Code%3A-Concepts-and-on-DIGITAL-Brender-Nelson/b94d517a8f5780db9cbca43a4b7870bec4d13f52</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[1] Debug Information Validation for Optimized Code (PLDI 2020)<o:p></o:p></p>
<p class="MsoNormal">Yuanbo Li, Shuo Ding, Qirun Zhang, Davide Italiano<o:p></o:p></p>
<p class="MsoNormal"><a href="https://helloqirun.github.io/papers/pldi20_yuanbo1.pdf">https://helloqirun.github.io/papers/pldi20_yuanbo1.pdf</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Debugging Information Testing: A Python reimplementation for the debug-information testing framework for the paper<o:p></o:p></p>
<p class="MsoNormal"><a href="https://www.cc.gatech.edu/~qrzhang/projects/debug/debug.html">https://www.cc.gatech.edu/~qrzhang/projects/debug/debug.html</a><o:p></o:p></p>
<p class="MsoNormal"><a href="https://github.com/yuanboli233/debug-info-testing">https://github.com/yuanboli233/debug-info-testing</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[2] Key Instructions: Solving the Code Location Problem for Optimized Code<o:p></o:p></p>
<p class="MsoNormal">Caroline Tice, Prof. Susan L. Graham<o:p></o:p></p>
<p class="MsoNormal"><a href="https://www.researchgate.net/publication/2432347_Key_Instructions_Solving_the_Code_Location_Problem_for_Optimized_Code">https://www.researchgate.net/publication/2432347_Key_Instructions_Solving_the_Code_Location_Problem_for_Optimized_Code</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Orlando<o:p></o:p></p>
</div>
</body>
</html>