LLVM 17.0.0git
BitstreamRemarkContainer.h
Go to the documentation of this file.
1//===-- BitstreamRemarkContainer.h - Container for remarks --------------*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file provides declarations for things used in the various types of
10// remark containers.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_REMARKS_BITSTREAMREMARKCONTAINER_H
15#define LLVM_REMARKS_BITSTREAMREMARKCONTAINER_H
16
17#include "llvm/ADT/StringRef.h"
19#include <cstdint>
20
21namespace llvm {
22namespace remarks {
23
24/// The current version of the remark container.
25/// Note: this is different from the version of the remark entry.
27/// The magic number used for identifying remark blocks.
28constexpr StringLiteral ContainerMagic("RMRK");
29
30/// Type of the remark container.
31/// The remark container has two modes:
32/// * separate: the metadata is separate from the remarks and points to the
33/// auxiliary file that contains the remarks.
34/// * standalone: the metadata and the remarks are emitted together.
36 /// The metadata emitted separately.
37 /// This will contain the following:
38 /// * Container version and type
39 /// * String table
40 /// * External file
42 /// The remarks emitted separately.
43 /// This will contain the following:
44 /// * Container version and type
45 /// * Remark version
47 /// Everything is emitted together.
48 /// This will contain the following:
49 /// * Container version and type
50 /// * Remark version
51 /// * String table
55};
56
57/// The possible blocks that will be encountered in a bitstream remark
58/// container.
60 /// The metadata block is mandatory. It should always come after the
61 /// BLOCKINFO_BLOCK, and contains metadata that should be used when parsing
62 /// REMARK_BLOCKs.
63 /// There should always be only one META_BLOCK.
65 /// One remark entry is represented using a REMARK_BLOCK. There can be
66 /// multiple REMARK_BLOCKs in the same file.
68};
69
70constexpr StringRef MetaBlockName = StringRef("Meta", 4);
71constexpr StringRef RemarkBlockName = StringRef("Remark", 6);
72
73/// The possible records that can be encountered in the previously described
74/// blocks.
76 // Meta block records.
81 // Remark block records.
87 // Helpers.
90};
91
92constexpr StringRef MetaContainerInfoName = StringRef("Container info", 14);
93constexpr StringRef MetaRemarkVersionName = StringRef("Remark version", 14);
94constexpr StringRef MetaStrTabName = StringRef("String table", 12);
95constexpr StringRef MetaExternalFileName = StringRef("External File", 13);
96constexpr StringRef RemarkHeaderName = StringRef("Remark header", 13);
97constexpr StringRef RemarkDebugLocName = StringRef("Remark debug location", 21);
98constexpr StringRef RemarkHotnessName = StringRef("Remark hotness", 14);
100 StringRef("Argument with debug location", 28);
102
103} // end namespace remarks
104} // end namespace llvm
105
106#endif // LLVM_REMARKS_BITSTREAMREMARKCONTAINER_H
A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs...
Definition: StringRef.h:841
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
@ FIRST_APPLICATION_BLOCKID
Definition: BitCodeEnums.h:72
constexpr StringRef RemarkBlockName
BitstreamRemarkContainerType
Type of the remark container.
@ SeparateRemarksFile
The remarks emitted separately.
@ SeparateRemarksMeta
The metadata emitted separately.
@ Standalone
Everything is emitted together.
constexpr StringRef RemarkHotnessName
BlockIDs
The possible blocks that will be encountered in a bitstream remark container.
@ REMARK_BLOCK_ID
One remark entry is represented using a REMARK_BLOCK.
@ META_BLOCK_ID
The metadata block is mandatory.
constexpr StringRef RemarkArgWithDebugLocName
constexpr StringRef MetaStrTabName
constexpr uint64_t CurrentContainerVersion
The current version of the remark container.
constexpr StringRef MetaRemarkVersionName
constexpr StringRef MetaBlockName
constexpr StringRef MetaContainerInfoName
constexpr StringRef RemarkHeaderName
constexpr StringLiteral ContainerMagic("RMRK")
The magic number used for identifying remark blocks.
constexpr StringRef MetaExternalFileName
constexpr StringRef RemarkArgWithoutDebugLocName
RecordIDs
The possible records that can be encountered in the previously described blocks.
constexpr StringRef RemarkDebugLocName
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18