Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
llvm::remarks Namespace Reference

Classes

struct  Argument
 A key-value pair with a debug location that is used to display the remarks at the right place in the source. More...
class  BitstreamBlockParserHelper
class  BitstreamBlockParserHelperBase
class  BitstreamMetaParserHelper
 Helper to parse a META_BLOCK for a bitstream remark container. More...
struct  BitstreamMetaSerializer
 Serializer of metadata for bitstream remarks. More...
struct  BitstreamParserHelper
 Helper to parse any bitstream remark container. More...
struct  BitstreamRemarkParser
 Parses and holds the state of the latest parsed remark. More...
class  BitstreamRemarkParserHelper
 Helper to parse a REMARK_BLOCK for a bitstream remark container. More...
struct  BitstreamRemarkSerializer
 Implementation of the remark serializer using LLVM bitstream. More...
struct  BitstreamRemarkSerializerHelper
 Serialize the remarks to LLVM bitstream. More...
class  EndOfFileError
class  HotnessThresholdParser
struct  MetaSerializer
 This is the base class for a remark metadata serializer. More...
struct  ParsedStringTable
 In-memory representation of the string table parsed from a buffer (e.g. More...
struct  Remark
 A remark type used for both emission and parsing. More...
struct  RemarkLinker
struct  RemarkLocation
 The debug location used to track a remark back to the source file. More...
struct  RemarkParser
 Parser used to parse a raw buffer to remarks::Remark objects. More...
struct  RemarkSerializer
 This is the base class for a remark serializer. More...
class  RemarkStreamer
struct  StringTable
 The string table used for serializing remarks. More...
struct  YAMLMetaSerializer
class  YAMLParseError
struct  YAMLRemarkParser
 Regular YAML to Remark parser. More...
struct  YAMLRemarkSerializer
 Serialize the remarks to YAML. More...

Enumerations

enum class  BitstreamRemarkContainerType {
  SeparateRemarksMeta , SeparateRemarksFile , Standalone , First = SeparateRemarksMeta ,
  Last = Standalone
}
 Type of the remark container. More...
enum  BlockIDs { META_BLOCK_ID = bitc::FIRST_APPLICATION_BLOCKID , REMARK_BLOCK_ID }
 The possible blocks that will be encountered in a bitstream remark container. More...
enum  RecordIDs {
  RECORD_META_CONTAINER_INFO = 1 , RECORD_META_REMARK_VERSION , RECORD_META_STRTAB , RECORD_META_EXTERNAL_FILE ,
  RECORD_REMARK_HEADER , RECORD_REMARK_DEBUG_LOC , RECORD_REMARK_HOTNESS , RECORD_REMARK_ARG_WITH_DEBUGLOC ,
  RECORD_REMARK_ARG_WITHOUT_DEBUGLOC , RECORD_FIRST = RECORD_META_CONTAINER_INFO , RECORD_LAST = RECORD_REMARK_ARG_WITHOUT_DEBUGLOC
}
 The possible records that can be encountered in the previously described blocks. More...
enum class  Type {
  Unknown , Passed , Missed , Analysis ,
  AnalysisFPCommute , AnalysisAliasing , Failure , First = Unknown ,
  Last = Failure
}
 The type of the remark. More...
enum class  Format { Unknown , Auto , YAML , Bitstream }
 The format used for serializing/deserializing remarks. More...
enum class  SerializerMode { Separate , Standalone }

Functions

constexpr StringLiteral ContainerMagic ("RMRK")
 The magic number used for identifying remark blocks.
constexpr StringLiteral MetaBlockName ("Meta")
constexpr StringLiteral RemarkBlockName ("Remark")
constexpr StringLiteral MetaContainerInfoName ("Container info")
constexpr StringLiteral MetaRemarkVersionName ("Remark version")
constexpr StringLiteral MetaStrTabName ("String table")
constexpr StringLiteral MetaExternalFileName ("External File")
constexpr StringLiteral RemarkHeaderName ("Remark header")
constexpr StringLiteral RemarkDebugLocName ("Remark debug location")
constexpr StringLiteral RemarkHotnessName ("Remark hotness")
constexpr StringLiteral RemarkArgWithDebugLocName ("Argument with debug location")
constexpr StringLiteral RemarkArgWithoutDebugLocName ("Argument")
Expected< std::optional< uint64_t > > parseHotnessThresholdOption (StringRef Arg)
StringRef typeToStr (Type Ty)
template<typename T>
bool operator< (const std::optional< T > &LHS, const std::optional< T > &RHS)
 Comparison operators for Remark objects and dependent objects.
bool operator== (const RemarkLocation &LHS, const RemarkLocation &RHS)
bool operator!= (const RemarkLocation &LHS, const RemarkLocation &RHS)
bool operator< (const RemarkLocation &LHS, const RemarkLocation &RHS)
bool operator== (const Argument &LHS, const Argument &RHS)
bool operator!= (const Argument &LHS, const Argument &RHS)
bool operator< (const Argument &LHS, const Argument &RHS)
bool operator== (const Remark &LHS, const Remark &RHS)
bool operator!= (const Remark &LHS, const Remark &RHS)
bool operator< (const Remark &LHS, const Remark &RHS)
raw_ostreamoperator<< (raw_ostream &OS, const RemarkLocation &RLoc)
raw_ostreamoperator<< (raw_ostream &OS, const Argument &Arg)
raw_ostreamoperator<< (raw_ostream &OS, const Remark &Remark)
constexpr StringLiteral Magic ("REMARKS")
LLVM_ABI Expected< FormatparseFormat (StringRef FormatStr)
 Parse and validate a string for the remark format.
LLVM_ABI Expected< FormatmagicToFormat (StringRef Magic)
 Parse and validate a magic number to a remark format.
LLVM_ABI Expected< FormatdetectFormat (Format Selected, StringRef Magic)
 Detect format based on selected format and magic number.
LLVM_ABI Expected< std::optional< StringRef > > getRemarksSectionContents (const object::ObjectFile &Obj)
 Returns a buffer with the contents of the remarks section depending on the format of the file.
LLVM_ABI Expected< std::unique_ptr< RemarkParser > > createRemarkParser (Format ParserFormat, StringRef Buf)
LLVM_ABI Expected< std::unique_ptr< RemarkParser > > createRemarkParserFromMeta (Format ParserFormat, StringRef Buf, std::optional< StringRef > ExternalFilePrependPath=std::nullopt)
LLVM_ABI Expected< std::unique_ptr< RemarkSerializer > > createRemarkSerializer (Format RemarksFormat, SerializerMode Mode, raw_ostream &OS)
 Create a remark serializer.
LLVM_ABI Expected< std::unique_ptr< RemarkSerializer > > createRemarkSerializer (Format RemarksFormat, SerializerMode Mode, raw_ostream &OS, remarks::StringTable StrTab)
 Create a remark serializer that uses a pre-filled string table.
Expected< std::unique_ptr< BitstreamRemarkParser > > createBitstreamParserFromMeta (StringRef Buf, std::optional< StringRef > ExternalFilePrependPath=std::nullopt)
Expected< std::unique_ptr< YAMLRemarkParser > > createYAMLParserFromMeta (StringRef Buf, std::optional< StringRef > ExternalFilePrependPath=std::nullopt)

Variables

constexpr uint64_t CurrentContainerVersion = 0
 The current version of the remark container.
constexpr uint64_t CurrentRemarkVersion = 0
 The current version of the remark entry.

Enumeration Type Documentation

◆ BitstreamRemarkContainerType

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.
Enumerator
SeparateRemarksMeta 

The metadata emitted separately.

This will contain the following:

  • Container version and type
  • String table
  • External file
SeparateRemarksFile 

The remarks emitted separately.

This will contain the following:

  • Container version and type
  • Remark version
Standalone 

Everything is emitted together.

This will contain the following:

  • Container version and type
  • Remark version
  • String table
First 
Last 

Definition at line 35 of file BitstreamRemarkContainer.h.

◆ BlockIDs

The possible blocks that will be encountered in a bitstream remark container.

Enumerator
META_BLOCK_ID 

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.

REMARK_BLOCK_ID 

One remark entry is represented using a REMARK_BLOCK.

There can be multiple REMARK_BLOCKs in the same file.

Definition at line 59 of file BitstreamRemarkContainer.h.

◆ Format

enum class llvm::remarks::Format
strong

The format used for serializing/deserializing remarks.

Enumerator
Unknown 
Auto 
YAML 
Bitstream 

Definition at line 26 of file RemarkFormat.h.

◆ RecordIDs

The possible records that can be encountered in the previously described blocks.

Enumerator
RECORD_META_CONTAINER_INFO 
RECORD_META_REMARK_VERSION 
RECORD_META_STRTAB 
RECORD_META_EXTERNAL_FILE 
RECORD_REMARK_HEADER 
RECORD_REMARK_DEBUG_LOC 
RECORD_REMARK_HOTNESS 
RECORD_REMARK_ARG_WITH_DEBUGLOC 
RECORD_REMARK_ARG_WITHOUT_DEBUGLOC 
RECORD_FIRST 
RECORD_LAST 

Definition at line 75 of file BitstreamRemarkContainer.h.

◆ SerializerMode

enum class llvm::remarks::SerializerMode
strong
Enumerator
Separate 
Standalone 

Definition at line 29 of file RemarkSerializer.h.

◆ Type

enum class llvm::remarks::Type
strong

The type of the remark.

MessagePack types as defined in the standard, with the exception of Integer being divided into a signed Int and unsigned UInt variant in order to map directly to C++ types.

The types map onto corresponding union members of the Object struct.

Enumerator
Unknown 
Passed 
Missed 
Analysis 
AnalysisFPCommute 
AnalysisAliasing 
Failure 
First 
Last 

Definition at line 66 of file Remark.h.

Function Documentation

◆ ContainerMagic()

StringLiteral llvm::remarks::ContainerMagic ( "RMRK" )
constexpr

◆ createBitstreamParserFromMeta()

Expected< std::unique_ptr< BitstreamRemarkParser > > llvm::remarks::createBitstreamParserFromMeta ( StringRef Buf,
std::optional< StringRef > ExternalFilePrependPath = std::nullopt )

Definition at line 256 of file BitstreamRemarkParser.cpp.

Referenced by createRemarkParserFromMeta().

◆ createRemarkParser()

Expected< std::unique_ptr< RemarkParser > > llvm::remarks::createRemarkParser ( Format ParserFormat,
StringRef Buf )

Definition at line 53 of file RemarkParser.cpp.

References Auto, Bitstream, detectFormat(), llvm_unreachable, Unknown, and YAML.

◆ createRemarkParserFromMeta()

Expected< std::unique_ptr< RemarkParser > > llvm::remarks::createRemarkParserFromMeta ( Format ParserFormat,
StringRef Buf,
std::optional< StringRef > ExternalFilePrependPath = std::nullopt )

◆ createRemarkSerializer() [1/2]

Expected< std::unique_ptr< RemarkSerializer > > llvm::remarks::createRemarkSerializer ( Format RemarksFormat,
SerializerMode Mode,
raw_ostream & OS )

◆ createRemarkSerializer() [2/2]

Expected< std::unique_ptr< RemarkSerializer > > llvm::remarks::createRemarkSerializer ( Format RemarksFormat,
SerializerMode Mode,
raw_ostream & OS,
remarks::StringTable StrTab )

Create a remark serializer that uses a pre-filled string table.

Definition at line 37 of file RemarkSerializer.cpp.

References Auto, Bitstream, llvm::createStringError(), llvm_unreachable, llvm::RemarksFormat, Unknown, and YAML.

◆ createYAMLParserFromMeta()

◆ detectFormat()

Expected< Format > llvm::remarks::detectFormat ( Format Selected,
StringRef Magic )

Detect format based on selected format and magic number.

Definition at line 51 of file RemarkFormat.cpp.

References Auto, Bitstream, llvm::createStringError(), llvm::StringRef::empty(), magicToFormat(), and Unknown.

Referenced by createRemarkParser(), and createRemarkParserFromMeta().

◆ getRemarksSectionContents()

Expected< std::optional< StringRef > > llvm::remarks::getRemarksSectionContents ( const object::ObjectFile & Obj)

Returns a buffer with the contents of the remarks section depending on the format of the file.

If the section doesn't exist, this returns an empty optional.

Definition at line 39 of file RemarkLinker.cpp.

References getRemarksSectionName(), llvm::object::ObjectFile::sections(), and llvm::Expected< T >::takeError().

Referenced by llvm::remarks::RemarkLinker::link().

◆ Magic()

StringLiteral llvm::remarks::Magic ( "REMARKS" )
constexpr

◆ magicToFormat()

Expected< Format > llvm::remarks::magicToFormat ( StringRef Magic)

Parse and validate a magic number to a remark format.

Definition at line 34 of file RemarkFormat.cpp.

References Bitstream, ContainerMagic(), llvm::createStringError(), llvm::StringRef::data(), llvm::StringSwitch< T, R >::Default(), Magic(), llvm::StringSwitch< T, R >::StartsWith(), Unknown, and YAML.

Referenced by detectFormat().

◆ MetaBlockName()

◆ MetaContainerInfoName()

StringLiteral llvm::remarks::MetaContainerInfoName ( "Container info" )
constexpr

◆ MetaExternalFileName()

◆ MetaRemarkVersionName()

◆ MetaStrTabName()

◆ operator!=() [1/3]

bool llvm::remarks::operator!= ( const Argument & LHS,
const Argument & RHS )
inline

Definition at line 181 of file Remark.h.

References LHS, and RHS.

◆ operator!=() [2/3]

bool llvm::remarks::operator!= ( const Remark & LHS,
const Remark & RHS )
inline

Definition at line 197 of file Remark.h.

References LHS, and RHS.

◆ operator!=() [3/3]

bool llvm::remarks::operator!= ( const RemarkLocation & LHS,
const RemarkLocation & RHS )
inline

Definition at line 168 of file Remark.h.

References LHS, and RHS.

◆ operator<() [1/4]

bool llvm::remarks::operator< ( const Argument & LHS,
const Argument & RHS )
inline

Definition at line 185 of file Remark.h.

References LHS, and RHS.

◆ operator<() [2/4]

bool llvm::remarks::operator< ( const Remark & LHS,
const Remark & RHS )
inline

Definition at line 201 of file Remark.h.

References LHS, and RHS.

◆ operator<() [3/4]

bool llvm::remarks::operator< ( const RemarkLocation & LHS,
const RemarkLocation & RHS )
inline

Definition at line 172 of file Remark.h.

References LHS, and RHS.

◆ operator<() [4/4]

template<typename T>
bool llvm::remarks::operator< ( const std::optional< T > & LHS,
const std::optional< T > & RHS )

Comparison operators for Remark objects and dependent objects.

Definition at line 149 of file Remark.h.

References LHS, and RHS.

◆ operator<<() [1/3]

raw_ostream & llvm::remarks::operator<< ( raw_ostream & OS,
const Argument & Arg )
inline

Definition at line 213 of file Remark.h.

References llvm::remarks::Argument::print().

◆ operator<<() [2/3]

raw_ostream & llvm::remarks::operator<< ( raw_ostream & OS,
const Remark & Remark )
inline

Definition at line 218 of file Remark.h.

References llvm::remarks::Remark::print().

◆ operator<<() [3/3]

raw_ostream & llvm::remarks::operator<< ( raw_ostream & OS,
const RemarkLocation & RLoc )
inline

Definition at line 208 of file Remark.h.

References llvm::remarks::RemarkLocation::print().

◆ operator==() [1/3]

bool llvm::remarks::operator== ( const Argument & LHS,
const Argument & RHS )
inline

Definition at line 177 of file Remark.h.

References LHS, and RHS.

◆ operator==() [2/3]

bool llvm::remarks::operator== ( const Remark & LHS,
const Remark & RHS )
inline

Definition at line 190 of file Remark.h.

References LHS, and RHS.

◆ operator==() [3/3]

bool llvm::remarks::operator== ( const RemarkLocation & LHS,
const RemarkLocation & RHS )
inline

Definition at line 162 of file Remark.h.

References LHS, and RHS.

◆ parseFormat()

◆ parseHotnessThresholdOption()

Expected< std::optional< uint64_t > > llvm::remarks::parseHotnessThresholdOption ( StringRef Arg)
inline

◆ RemarkArgWithDebugLocName()

StringLiteral llvm::remarks::RemarkArgWithDebugLocName ( "Argument with debug location" )
constexpr

◆ RemarkArgWithoutDebugLocName()

◆ RemarkBlockName()

◆ RemarkDebugLocName()

◆ RemarkHeaderName()

◆ RemarkHotnessName()

◆ typeToStr()

StringRef llvm::remarks::typeToStr ( Type Ty)
inline

Definition at line 78 of file Remark.h.

References Analysis, AnalysisAliasing, AnalysisFPCommute, Missed, Passed, and Unknown.

Referenced by llvm::remarks::Remark::print().

Variable Documentation

◆ CurrentContainerVersion

uint64_t llvm::remarks::CurrentContainerVersion = 0
constexpr

The current version of the remark container.

Note: this is different from the version of the remark entry.

Definition at line 26 of file BitstreamRemarkContainer.h.

Referenced by llvm::remarks::BitstreamMetaSerializer::emit(), and llvm::remarks::BitstreamMetaParserHelper::parseRecord().

◆ CurrentRemarkVersion

uint64_t llvm::remarks::CurrentRemarkVersion = 0
constexpr

The current version of the remark entry.

Definition at line 29 of file Remark.h.

Referenced by llvm::remarks::BitstreamMetaSerializer::emit(), emitVersion(), llvm::remarks::BitstreamMetaParserHelper::parseRecord(), and parseVersion().