<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [meta] Make llvm passes debug info invariant"
   href="https://bugs.llvm.org/show_bug.cgi?id=37728">37728</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[meta] Make llvm passes debug info invariant
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>new-bugs
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>enhancement
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>new bugs
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>vsk@apple.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>This is a meta bug for tracking work related to making llvm passes debug info
invariant. That means that the output of llvm passes should be the same, modulo
debug info metadata & intrinsics, regardless of whether the input IR contains
debug info. The motivation for this is that enabling debug info should not
degrade optimizations.

There are at least two different approaches for detecting debug invariance
bugs:

1. Compile a C program with/without -g, and check that the resulting text
sections are identical.

2. Compile some LLVM IR using opt, with/without -debugify-each enabled, and
check that the stripped output is identical. The -debugify-each mode
applies/removes synthetic debug info to a Module before/after each pass in
opt's pipeline.

The second approach might be a bit more flexible, seeing as it's possible to
generate LLVM IR from a C program, and to then run a custom pipeline over the
IR using opt.

In addition to finding debug invariance bugs, we should think about setting up
infrastructure to detect regressions, and about adding utilities to the
codebase which might make it easier to write debug info invariant passes.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>