LLVM 22.0.0git
|
Serialize the remarks to LLVM bitstream. More...
#include "llvm/Remarks/BitstreamRemarkSerializer.h"
Public Member Functions | |
BitstreamRemarkSerializerHelper (BitstreamRemarkContainerType ContainerType, raw_ostream &OS) | |
BitstreamRemarkSerializerHelper (const BitstreamRemarkSerializerHelper &)=delete | |
BitstreamRemarkSerializerHelper & | operator= (const BitstreamRemarkSerializerHelper &)=delete |
BitstreamRemarkSerializerHelper (BitstreamRemarkSerializerHelper &&)=delete | |
BitstreamRemarkSerializerHelper & | operator= (BitstreamRemarkSerializerHelper &&)=delete |
void | setupBlockInfo () |
Set up the necessary block info entries according to the container type. | |
void | setupMetaBlockInfo () |
Set up the block info for the metadata block. | |
void | setupMetaRemarkVersion () |
The remark version in the metadata block. | |
void | emitMetaRemarkVersion (uint64_t RemarkVersion) |
void | setupMetaStrTab () |
The strtab in the metadata block. | |
void | emitMetaStrTab (const StringTable &StrTab) |
void | setupMetaExternalFile () |
The external file in the metadata block. | |
void | emitMetaExternalFile (StringRef Filename) |
void | setupRemarkBlockInfo () |
The block info for the remarks block. | |
void | emitMetaBlock (std::optional< StringRef > Filename=std::nullopt) |
Emit the main metadata at the beginning of the file. | |
void | emitLateMetaBlock (const StringTable &StrTab) |
Emit the remaining metadata at the end of the file. | |
void | emitRemark (const Remark &Remark, StringTable &StrTab) |
Emit a remark block. The string table is required. |
Public Attributes | |
SmallVector< uint64_t, 64 > | R |
Buffer used to construct records and pass to the bitstream writer. | |
BitstreamWriter | Bitstream |
The Bitstream writer. | |
BitstreamRemarkContainerType | ContainerType |
The type of the container we are serializing. | |
uint64_t | RecordMetaContainerInfoAbbrevID = 0 |
Abbrev IDs initialized in the block info block. | |
uint64_t | RecordMetaRemarkVersionAbbrevID = 0 |
uint64_t | RecordMetaStrTabAbbrevID = 0 |
uint64_t | RecordMetaExternalFileAbbrevID = 0 |
uint64_t | RecordRemarkHeaderAbbrevID = 0 |
uint64_t | RecordRemarkDebugLocAbbrevID = 0 |
uint64_t | RecordRemarkHotnessAbbrevID = 0 |
uint64_t | RecordRemarkArgWithDebugLocAbbrevID = 0 |
uint64_t | RecordRemarkArgWithoutDebugLocAbbrevID = 0 |
Serialize the remarks to LLVM bitstream.
This class provides ways to emit remarks in the LLVM bitstream format and its associated metadata.
Definition at line 30 of file BitstreamRemarkSerializer.h.
BitstreamRemarkSerializerHelper::BitstreamRemarkSerializerHelper | ( | BitstreamRemarkContainerType | ContainerType, |
raw_ostream & | OS ) |
Definition at line 23 of file BitstreamRemarkSerializer.cpp.
References Bitstream, and ContainerType.
Referenced by BitstreamRemarkSerializerHelper(), BitstreamRemarkSerializerHelper(), operator=(), and operator=().
|
delete |
References BitstreamRemarkSerializerHelper().
|
delete |
References BitstreamRemarkSerializerHelper().
void BitstreamRemarkSerializerHelper::emitLateMetaBlock | ( | const StringTable & | StrTab | ) |
Emit the remaining metadata at the end of the file.
Here we emit metadata that is only known once all remarks were emitted.
Definition at line 249 of file BitstreamRemarkSerializer.cpp.
References Bitstream, emitMetaStrTab(), and llvm::remarks::META_BLOCK_ID.
void BitstreamRemarkSerializerHelper::emitMetaBlock | ( | std::optional< StringRef > | Filename = std::nullopt | ) |
Emit the main metadata at the beginning of the file.
Definition at line 224 of file BitstreamRemarkSerializer.cpp.
References assert(), Bitstream, ContainerType, llvm::remarks::CurrentContainerVersion, llvm::remarks::CurrentRemarkVersion, emitMetaExternalFile(), emitMetaRemarkVersion(), llvm_unreachable, llvm::make_scope_exit(), llvm::remarks::META_BLOCK_ID, R, llvm::remarks::RECORD_META_CONTAINER_INFO, RecordMetaContainerInfoAbbrevID, llvm::remarks::RemarksFile, and llvm::remarks::RemarksFileExternal.
void BitstreamRemarkSerializerHelper::emitMetaExternalFile | ( | StringRef | Filename | ) |
Definition at line 116 of file BitstreamRemarkSerializer.cpp.
References Bitstream, R, llvm::remarks::RECORD_META_EXTERNAL_FILE, and RecordMetaExternalFileAbbrevID.
Referenced by emitMetaBlock().
void BitstreamRemarkSerializerHelper::emitMetaRemarkVersion | ( | uint64_t | RemarkVersion | ) |
Definition at line 73 of file BitstreamRemarkSerializer.cpp.
References Bitstream, R, llvm::remarks::RECORD_META_REMARK_VERSION, and RecordMetaRemarkVersionAbbrevID.
Referenced by emitMetaBlock().
void BitstreamRemarkSerializerHelper::emitMetaStrTab | ( | const StringTable & | StrTab | ) |
Definition at line 92 of file BitstreamRemarkSerializer.cpp.
References Bitstream, R, llvm::remarks::RECORD_META_STRTAB, RecordMetaStrTabAbbrevID, llvm::remarks::StringTable::serialize(), and llvm::raw_string_ostream::str().
Referenced by emitLateMetaBlock().
void BitstreamRemarkSerializerHelper::emitRemark | ( | const Remark & | Remark, |
StringTable & | StrTab ) |
Emit a remark block. The string table is required.
Definition at line 257 of file BitstreamRemarkSerializer.cpp.
References llvm::remarks::StringTable::add(), llvm::remarks::Remark::Args, Bitstream, llvm::remarks::Remark::FunctionName, llvm::remarks::Remark::Hotness, llvm::InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key, llvm::remarks::Argument::Key, llvm::remarks::Argument::Loc, llvm::remarks::Remark::Loc, llvm::remarks::Remark::PassName, R, llvm::remarks::RECORD_REMARK_ARG_WITH_DEBUGLOC, llvm::remarks::RECORD_REMARK_ARG_WITHOUT_DEBUGLOC, llvm::remarks::RECORD_REMARK_DEBUG_LOC, llvm::remarks::RECORD_REMARK_HEADER, llvm::remarks::RECORD_REMARK_HOTNESS, RecordRemarkArgWithDebugLocAbbrevID, RecordRemarkArgWithoutDebugLocAbbrevID, RecordRemarkDebugLocAbbrevID, RecordRemarkHeaderAbbrevID, RecordRemarkHotnessAbbrevID, llvm::remarks::REMARK_BLOCK_ID, llvm::remarks::Remark::RemarkName, llvm::remarks::Remark::RemarkType, and llvm::remarks::Argument::Val.
|
delete |
References BitstreamRemarkSerializerHelper().
|
delete |
References BitstreamRemarkSerializerHelper().
void BitstreamRemarkSerializerHelper::setupBlockInfo | ( | ) |
Set up the necessary block info entries according to the container type.
Definition at line 195 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::CallingConv::C, llvm::remarks::ContainerMagic(), ContainerType, llvm_unreachable, llvm::make_scope_exit(), llvm::remarks::RemarksFile, llvm::remarks::RemarksFileExternal, setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), and setupRemarkBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaBlockInfo | ( | ) |
Set up the block info for the metadata block.
Definition at line 46 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Fixed, initBlock(), llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaBlockName(), llvm::remarks::MetaContainerInfoName(), R, llvm::remarks::RECORD_META_CONTAINER_INFO, RecordMetaContainerInfoAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaExternalFile | ( | ) |
The external file in the metadata block.
Definition at line 106 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Blob, llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaExternalFileName(), R, llvm::remarks::RECORD_META_EXTERNAL_FILE, RecordMetaExternalFileAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaRemarkVersion | ( | ) |
The remark version in the metadata block.
Definition at line 62 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Fixed, llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaRemarkVersionName(), R, llvm::remarks::RECORD_META_REMARK_VERSION, RecordMetaRemarkVersionAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupMetaStrTab | ( | ) |
The strtab in the metadata block.
Definition at line 82 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Blob, llvm::remarks::META_BLOCK_ID, llvm::remarks::MetaStrTabName(), R, llvm::remarks::RECORD_META_STRTAB, RecordMetaStrTabAbbrevID, and setRecordName().
Referenced by setupBlockInfo().
void BitstreamRemarkSerializerHelper::setupRemarkBlockInfo | ( | ) |
The block info for the remarks block.
Definition at line 123 of file BitstreamRemarkSerializer.cpp.
References Bitstream, llvm::BitCodeAbbrevOp::Fixed, initBlock(), R, llvm::remarks::RECORD_REMARK_ARG_WITH_DEBUGLOC, llvm::remarks::RECORD_REMARK_ARG_WITHOUT_DEBUGLOC, llvm::remarks::RECORD_REMARK_DEBUG_LOC, llvm::remarks::RECORD_REMARK_HEADER, llvm::remarks::RECORD_REMARK_HOTNESS, RecordRemarkArgWithDebugLocAbbrevID, RecordRemarkArgWithoutDebugLocAbbrevID, RecordRemarkDebugLocAbbrevID, RecordRemarkHeaderAbbrevID, RecordRemarkHotnessAbbrevID, llvm::remarks::REMARK_BLOCK_ID, llvm::remarks::RemarkArgWithDebugLocName(), llvm::remarks::RemarkArgWithoutDebugLocName(), llvm::remarks::RemarkBlockName(), llvm::remarks::RemarkDebugLocName(), llvm::remarks::RemarkHeaderName(), llvm::remarks::RemarkHotnessName(), setRecordName(), and llvm::BitCodeAbbrevOp::VBR.
Referenced by setupBlockInfo().
BitstreamWriter llvm::remarks::BitstreamRemarkSerializerHelper::Bitstream |
The Bitstream writer.
Definition at line 34 of file BitstreamRemarkSerializer.h.
Referenced by BitstreamRemarkSerializerHelper(), emitLateMetaBlock(), emitMetaBlock(), emitMetaExternalFile(), emitMetaRemarkVersion(), emitMetaStrTab(), emitRemark(), setupBlockInfo(), setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), and setupRemarkBlockInfo().
BitstreamRemarkContainerType llvm::remarks::BitstreamRemarkSerializerHelper::ContainerType |
The type of the container we are serializing.
Definition at line 36 of file BitstreamRemarkSerializer.h.
Referenced by BitstreamRemarkSerializerHelper(), emitMetaBlock(), and setupBlockInfo().
SmallVector<uint64_t, 64> llvm::remarks::BitstreamRemarkSerializerHelper::R |
Buffer used to construct records and pass to the bitstream writer.
Definition at line 32 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaBlock(), emitMetaExternalFile(), emitMetaRemarkVersion(), emitMetaStrTab(), emitRemark(), setupMetaBlockInfo(), setupMetaExternalFile(), setupMetaRemarkVersion(), setupMetaStrTab(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaContainerInfoAbbrevID = 0 |
Abbrev IDs initialized in the block info block.
Note: depending on the container type, some IDs might be uninitialized. Warning: When adding more abbrev IDs, make sure to update the BlockCodeSize (in the call to EnterSubblock).
Definition at line 42 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaBlock(), and setupMetaBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaExternalFileAbbrevID = 0 |
Definition at line 45 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaExternalFile(), and setupMetaExternalFile().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaRemarkVersionAbbrevID = 0 |
Definition at line 43 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaRemarkVersion(), and setupMetaRemarkVersion().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordMetaStrTabAbbrevID = 0 |
Definition at line 44 of file BitstreamRemarkSerializer.h.
Referenced by emitMetaStrTab(), and setupMetaStrTab().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkArgWithDebugLocAbbrevID = 0 |
Definition at line 49 of file BitstreamRemarkSerializer.h.
Referenced by emitRemark(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkArgWithoutDebugLocAbbrevID = 0 |
Definition at line 50 of file BitstreamRemarkSerializer.h.
Referenced by emitRemark(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkDebugLocAbbrevID = 0 |
Definition at line 47 of file BitstreamRemarkSerializer.h.
Referenced by emitRemark(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkHeaderAbbrevID = 0 |
Definition at line 46 of file BitstreamRemarkSerializer.h.
Referenced by emitRemark(), and setupRemarkBlockInfo().
uint64_t llvm::remarks::BitstreamRemarkSerializerHelper::RecordRemarkHotnessAbbrevID = 0 |
Definition at line 48 of file BitstreamRemarkSerializer.h.
Referenced by emitRemark(), and setupRemarkBlockInfo().