<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 - Evaluate stripping dead types from PDBs"
   href="https://bugs.llvm.org/show_bug.cgi?id=39563">39563</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Evaluate stripping dead types from PDBs
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lld
          </td>
        </tr>

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

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

        <tr>
          <th>OS</th>
          <td>Windows NT
          </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>COFF
          </td>
        </tr>

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

        <tr>
          <th>Reporter</th>
          <td>rnk@google.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org, zturner@google.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>When LLD makes a PDB, it includes all types from all objects and type server
PDBs. When MSVC link.exe makes a PDB, it brings in types one at a time as they
are referenced from symbol records, in our observations. This means LLD PDBs
may include extra type information.

This is less of a problem when compiling with clang, because clang only emits
debug info for types that were required to be complete by default
(-fstandalone-debug vs -flimit-debug-info). However, there can still be dead
type info, especially when /OPT:REF is enabled, because that will cause the
code and corresponding symbol records to be discarded at link time. Those
symbol records may reference otherwise dead type information (lambda types
especially).

We should add a tool to llvm-pdbutil to calculate what percentage of type
records and type record bytes are actually referenced by symbol records, and
decide if it's worth spending time in the linker to strip this extra
unreferenced info.

I suspect that it won't be worth doing, but it'd be nice to build a tool to
collect this data.</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>