[PATCH] Bitcode: Try to emit metadata in function blocks
Duncan P. N. Exon Smith via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 28 07:44:06 PDT 2016
> On 2016-Mar-27, at 17:41, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
>
> Whenever metadata is only referenced by a single function, emit the
> metadata just in that function block. This should improve lazy-loading
> by reducing the amount of metadata in the global block.
>
> For now, this should catch all DILocations, and anything else that
> happens to be referenced only by a single function.
>
> It's also a first step toward a couple of possible future directions
> (which this commit does *not* implement):
>
> 1. Some debug info metadata is only referenced from compile units and
> individual functions. If we can drop the link from the compile
> unit, this optimization will get more powerful.
>
> 2. Any uniqued metadata that isn't referenced globally can in theory be
> emitted in every function block that references it (trading off
> bitcode size and full-parse time vs. lazy-load time).
>
> Note: the only change on the reader side is cautious error checking.
> The metadata stored in function blocks gets purged after parsing each
> function, which means unresolved forward references will get lost.
> Since all the global metadata should have already been resolved by the
> time we get to the function metadata blocks we just need to check for
> that case. (If for some reason we need this, the fix is to store
> about-to-be-dropped unresolved nodes in MetadataList::shrinkTo until
> they can be handled succesfully by a future call to
> MetadataList::tryToResolveCycles.)
>
> <0001-Bitcode-Try-to-emit-metadata-in-function-blocks-v3.patch>
I realized that it's straightforward to use llvm-bcanalyzer to test that
this works correctly. Attaching a new version of the patch with a
testcase.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Bitcode-Try-to-emit-metadata-in-function-blocks-v4.patch
Type: application/octet-stream
Size: 23401 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160328/38aea506/attachment.obj>
More information about the llvm-commits
mailing list