blob: a715dcc2c77423ae343e625ca0e29ec419b08f1c [file] [log] [blame]
<html>
<head><title>Debug Info BOF</title></head>
<body>
<h1>Debug Info BOF</h1>
<h3><i>Eric Christopher</i></h3>
<p>Optimized debugging is still a big miss with a lof of metadata being lost at
various stages, mostly affecting variable tracking, leastly affecting line
information.</p>
<p>Suggestion to use dom/dataflow to compute liveness for location lists.
Eric not keen on this (expensive?).</p>
<p>Dwarf 4 seems to be the standard that LLVM is being coded to, Dwarf 3 in
maintenance mode, Dwarf 2 is dead. Still, would be good to have some mechanism
to limit the version of Dwarf symbols, to avoid breaking compatibility with
older toolchains for a small feature.</p>
<p>In time, Dwarf 3 will be deprecated, and the story will repeat, and it's clear
and accepted by all that this is the natural course of thing.</p>
<p>Debug info for LTO "now works" in 3.4, uniquing all C++ types.
This depends on having consistent class descriptions across CUs.</p>
<p>Many debug info size improvements. Non-LTO "smaller than GCC" in 3.4.</p>
<p>Verifier will check debug info, so metadata is supposed to be consistent
after validation.</p>
<p>Metadata may lose type information and be left with line, function and scope
info. The rest can be inferred from IR.</p>
<p>Debug metadata is widely known to be huge and methods to reduce the size in
IR are being considered, including emitting Dwarf directly in IR, converting
the most common constructs to text literals (including small numbers, < 4-8
digits), packing (zip) the contents, etc.</p>
</body>