16#ifndef LLVM_OBJECTYAML_BBADDRMAPYAML_H
17#define LLVM_OBJECTYAML_BBADDRMAPYAML_H
36 std::optional<llvm::yaml::Hex64>
Hash;
48 std::optional<std::vector<BBRangeEntry>>
BBRanges;
53 return BBRanges->front().BaseAddress;
63 for (
const BBEntry &BBE : *BBR.BBEntries)
89 const std::vector<PGOAnalysisMapEntry> *PGOAnalyses,
108template <>
struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry> {
109 LLVM_ABI static void mapping(IO &IO, BBAddrMapYAML::BBAddrMapEntry &
E);
112template <>
struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry> {
113 LLVM_ABI static void mapping(IO &IO,
114 BBAddrMapYAML::BBAddrMapEntry::BBRangeEntry &
E);
117template <>
struct MappingTraits<BBAddrMapYAML::BBAddrMapEntry::BBEntry> {
118 LLVM_ABI static void mapping(IO &IO,
119 BBAddrMapYAML::BBAddrMapEntry::BBEntry &
E);
122template <>
struct MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry> {
123 LLVM_ABI static void mapping(IO &IO, BBAddrMapYAML::PGOAnalysisMapEntry &
E);
127struct MappingTraits<BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry> {
129 mapping(IO &IO, BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry &
E);
134 BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry> {
137 BBAddrMapYAML::PGOAnalysisMapEntry::PGOBBEntry::SuccessorEntry &
E);
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
Represent a constant reference to an array (0 or more elements consecutively in memory),...
LLVM_ABI void encodePayload(ArrayRef< BBAddrMapEntry > Entries, const std::vector< PGOAnalysisMapEntry > *PGOAnalyses, yaml::ContiguousBlobAccumulator &CBA, llvm::endianness Endian, unsigned AddressSize)
Encodes the BBAddrMap payload into CBA.
This is an optimization pass for GlobalISel generic memory operations.
llvm::yaml::Hex64 Metadata
std::optional< std::vector< llvm::yaml::Hex64 > > CallsiteEndOffsets
std::optional< llvm::yaml::Hex64 > Hash
llvm::yaml::Hex64 AddressOffset
std::optional< std::vector< BBEntry > > BBEntries
std::optional< uint64_t > NumBlocks
llvm::yaml::Hex64 BaseAddress
std::optional< std::vector< BBRangeEntry > > BBRanges
llvm::yaml::Hex64 getFunctionAddress() const
std::optional< uint64_t > NumBBRanges
bool hasAnyCallsiteEndOffsets() const
llvm::yaml::Hex16 Feature
std::optional< uint32_t > PostLinkBrFreq
std::optional< std::vector< SuccessorEntry > > Successors
std::optional< uint64_t > BBFreq
std::optional< uint32_t > PostLinkBBFreq
std::optional< uint64_t > FuncEntryCount
std::optional< std::vector< PGOBBEntry > > PGOBBEntries
This class should be specialized by any type that needs to be converted to/from a YAML mapping.