<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 - [CodeView] symbol records point to forward decls instead of full decls"
   href="https://bugs.llvm.org/show_bug.cgi?id=39853">39853</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>[CodeView] symbol records point to forward decls instead of full decls
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>libraries
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </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>DebugInfo
          </td>
        </tr>

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

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

        <tr>
          <th>CC</th>
          <td>alexandre.ganea@ubisoft.com, jdevlieghere@apple.com, keith.walker@arm.com, llvm-bugs@lists.llvm.org, paul_robinson@playstation.sony.com, rnk@google.com
          </td>
        </tr></table>
      <p>
        <div>
        <pre>We seem to have a general problem where symbol records such as S_UDT,
S_GDATA32, S_LDATA32, and perhaps others have type indices that point to
forward declarations.

We should make these point to full decls to match the behavior of MSVC.

It's interesting that we found this, because it reminds me of something
Alexandre Ganea said to me at the LLVM developer conference.  Which is that
when you add a variable in the watch window and expand it, the first time it
can be very slow, maybe a couple of seconds.  But if you use MSVC to compile,
this slowdown doesn't exist.

This seems like a plausible explanation for this.  If MSVC follows your
TypeIndex and finds a forward decl, it has to scan for the full decl itself,
and these are potentially many many records apart in the type stream.  However,
once it finds it the first time, it could maintain its own internal map and not
have to translate it again.

So I'm hypothesizing that fixing this may fix Alexander's problem as well.</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>