LLVM  10.0.0svn
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_REMARK_CONTAINER_H
15 #define LLVM_REMARKS_REMARK_CONTAINER_H
16 
17 #include "llvm/ADT/StringRef.h"
19 #include <cstdint>
20 
21 namespace llvm {
22 namespace remarks {
23 
24 /// The current version of the remark container.
25 /// Note: this is different from the version of the remark entry.
26 constexpr uint64_t CurrentContainerVersion = 0;
27 /// The magic number used for identifying remark blocks.
28 constexpr 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
52  Standalone,
54  Last = Standalone,
55 };
56 
57 /// The possible blocks that will be encountered in a bitstream remark
58 /// container.
59 enum BlockIDs {
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 
70 constexpr StringRef MetaBlockName = StringRef("Meta", 4);
71 constexpr StringRef RemarkBlockName = StringRef("Remark", 6);
72 
73 /// The possible records that can be encountered in the previously described
74 /// blocks.
75 enum RecordIDs {
76  // Meta block records.
81  // Remark block records.
87  // Helpers.
90 };
91 
92 constexpr StringRef MetaContainerInfoName = StringRef("Container info", 14);
93 constexpr StringRef MetaRemarkVersionName = StringRef("Remark version", 14);
94 constexpr StringRef MetaStrTabName = StringRef("String table", 12);
95 constexpr StringRef MetaExternalFileName = StringRef("External File", 13);
96 constexpr StringRef RemarkHeaderName = StringRef("Remark header", 13);
97 constexpr StringRef RemarkDebugLocName = StringRef("Remark debug location", 21);
98 constexpr 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_REMARK_CONTAINER_H */
constexpr StringRef RemarkBlockName
This class represents lattice values for constants.
Definition: AllocatorList.h:23
constexpr StringRef RemarkArgWithDebugLocName
constexpr StringRef MetaContainerInfoName
constexpr StringRef MetaExternalFileName
constexpr StringRef RemarkArgWithoutDebugLocName
A wrapper around a string literal that serves as a proxy for constructing global tables of StringRefs...
Definition: StringRef.h:852
constexpr StringRef RemarkHotnessName
constexpr StringRef MetaStrTabName
One remark entry is represented using a REMARK_BLOCK.
RecordIDs
The possible records that can be encountered in the previously described blocks.
constexpr StringLiteral ContainerMagic("RMRK")
The magic number used for identifying remark blocks.
constexpr StringRef MetaRemarkVersionName
The metadata block is mandatory.
constexpr uint64_t CurrentContainerVersion
The current version of the remark container.
BlockIDs
The possible blocks that will be encountered in a bitstream remark container.
constexpr StringRef RemarkHeaderName
constexpr StringRef MetaBlockName
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:48
constexpr StringRef RemarkDebugLocName
BitstreamRemarkContainerType
Type of the remark container.