HomePhabricator

[Remarks] Add an LLVM-bitstream-based remark serializer

Authored by thegameg on Jul 30 2019, 4:11 PM.

Description

[Remarks] Add an LLVM-bitstream-based remark serializer

Add a new serializer, using a binary format based on the LLVM bitstream
format.

This format provides a way to serialize the remarks in two modes:

  1. Separate mode: the metadata is separate from the remark entries.
  2. Standalone mode: the metadata and the remark entries are in the same

file.

The format contains:

  • a meta block: container version, container type, string table,

external file path, remark version

  • a remark block: type, remark name, pass name, function name, debug

file, debug line, debug column, hotness, arguments (key, value, debug
file, debug line, debug column)

A string table is required for this format, which will be dumped in the
meta block to be consumed before parsing the remark blocks.

On clang itself, we noticed a size reduction of 13.4x compared to YAML,
and a compile-time reduction of between 1.7% and 3.5% on CTMark.

Differential Revision: https://reviews.llvm.org/D63466

llvm-svn: 367364

Details

Committed
thegamegJul 30 2019, 4:11 PM
Differential Revision
D63466: [Remarks] Add an LLVM-bitstream-based remark serializer
Parents
rG310f6b89b198: [TableGen] Reuse typedef across emitters (NFC)
Branches
Unknown
Tags
Unknown