aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm12/include/llvm/Remarks/BitstreamRemarkContainer.h
blob: cdbff2567eff41e6ec925185f2988502ec6d6256 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#pragma once 
 
#ifdef __GNUC__ 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-parameter" 
#endif 
 
//===-- BitstreamRemarkContainer.h - Container for remarks --------------*-===// 
// 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 
// See https://llvm.org/LICENSE.txt for license information. 
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 
// 
//===----------------------------------------------------------------------===// 
// 
// This file provides declarations for things used in the various types of 
// remark containers. 
// 
//===----------------------------------------------------------------------===// 
 
#ifndef LLVM_REMARKS_REMARK_CONTAINER_H 
#define LLVM_REMARKS_REMARK_CONTAINER_H 
 
#include "llvm/ADT/StringRef.h" 
#include "llvm/Bitstream/BitCodes.h" 
#include <cstdint> 
 
namespace llvm { 
namespace remarks { 
 
/// The current version of the remark container. 
/// Note: this is different from the version of the remark entry. 
constexpr uint64_t CurrentContainerVersion = 0; 
/// The magic number used for identifying remark blocks. 
constexpr StringLiteral ContainerMagic("RMRK"); 
 
/// Type of the remark container. 
/// The remark container has two modes: 
/// * separate: the metadata is separate from the remarks and points to the 
///             auxiliary file that contains the remarks. 
/// * standalone: the metadata and the remarks are emitted together. 
enum class BitstreamRemarkContainerType { 
  /// The metadata emitted separately. 
  /// This will contain the following: 
  /// * Container version and type 
  /// * String table 
  /// * External file 
  SeparateRemarksMeta, 
  /// The remarks emitted separately. 
  /// This will contain the following: 
  /// * Container version and type 
  /// * Remark version 
  SeparateRemarksFile, 
  /// Everything is emitted together. 
  /// This will contain the following: 
  /// * Container version and type 
  /// * Remark version 
  /// * String table 
  Standalone, 
  First = SeparateRemarksMeta, 
  Last = Standalone, 
}; 
 
/// The possible blocks that will be encountered in a bitstream remark 
/// container. 
enum BlockIDs { 
  /// The metadata block is mandatory. It should always come after the 
  /// BLOCKINFO_BLOCK, and contains metadata that should be used when parsing 
  /// REMARK_BLOCKs. 
  /// There should always be only one META_BLOCK. 
  META_BLOCK_ID = bitc::FIRST_APPLICATION_BLOCKID, 
  /// One remark entry is represented using a REMARK_BLOCK. There can be 
  /// multiple REMARK_BLOCKs in the same file. 
  REMARK_BLOCK_ID 
}; 
 
constexpr StringRef MetaBlockName = StringRef("Meta", 4); 
constexpr StringRef RemarkBlockName = StringRef("Remark", 6); 
 
/// The possible records that can be encountered in the previously described 
/// blocks. 
enum RecordIDs { 
  // Meta block records. 
  RECORD_META_CONTAINER_INFO = 1, 
  RECORD_META_REMARK_VERSION, 
  RECORD_META_STRTAB, 
  RECORD_META_EXTERNAL_FILE, 
  // Remark block records. 
  RECORD_REMARK_HEADER, 
  RECORD_REMARK_DEBUG_LOC, 
  RECORD_REMARK_HOTNESS, 
  RECORD_REMARK_ARG_WITH_DEBUGLOC, 
  RECORD_REMARK_ARG_WITHOUT_DEBUGLOC, 
  // Helpers. 
  RECORD_FIRST = RECORD_META_CONTAINER_INFO, 
  RECORD_LAST = RECORD_REMARK_ARG_WITHOUT_DEBUGLOC 
}; 
 
constexpr StringRef MetaContainerInfoName = StringRef("Container info", 14); 
constexpr StringRef MetaRemarkVersionName = StringRef("Remark version", 14); 
constexpr StringRef MetaStrTabName = StringRef("String table", 12); 
constexpr StringRef MetaExternalFileName = StringRef("External File", 13); 
constexpr StringRef RemarkHeaderName = StringRef("Remark header", 13); 
constexpr StringRef RemarkDebugLocName = StringRef("Remark debug location", 21); 
constexpr StringRef RemarkHotnessName = StringRef("Remark hotness", 14); 
constexpr StringRef RemarkArgWithDebugLocName = 
    StringRef("Argument with debug location", 28); 
constexpr StringRef RemarkArgWithoutDebugLocName = StringRef("Argument", 8); 
 
} // end namespace remarks 
} // end namespace llvm 
 
#endif /* LLVM_REMARKS_REMARK_CONTAINER_H */ 
 
#ifdef __GNUC__ 
#pragma GCC diagnostic pop 
#endif