61#ifndef INSTR_PROF_VISIBILITY
62#define INSTR_PROF_VISIBILITY
69#ifndef INSTR_PROF_DATA
70#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
72#define INSTR_PROF_DATA_DEFINED
78 ConstantInt::get(
llvm::Type::getInt64Ty(Ctx), \
79 Inc->getHash()->getZExtValue()))
82 RelativeUniformCounterPtr)
93 ConstantInt::get(
llvm::Type::getInt32Ty(Ctx), NumCounters))
95 ConstantArray::get(Int16ArrayTy, Int16ArrayVals)) \
97 OffloadDeviceWaveSize, \
98 ConstantInt::get(
llvm::Type::getInt16Ty(Ctx), \
99 OffloadDeviceWaveSizeVal))
101 ConstantInt::get(
llvm::Type::getInt32Ty(Ctx), NumBitmapBytes))
102#undef INSTR_PROF_DATA
109#ifndef INSTR_PROF_VTABLE_DATA
110#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
112#define INSTR_PROF_VTABLE_DATA_DEFINED
116 IndexedInstrProf::ComputeHash(PGOVTableName)))
118 VTablePointer, VTableAddr)
122#undef INSTR_PROF_VTABLE_DATA
137#ifndef INSTR_PROF_VALUE_NODE
138#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
140#define INSTR_PROF_DATA_DEFINED
143 ConstantInt::get(llvm::Type::GetInt64Ty(Ctx), 0))
145 ConstantInt::get(
llvm::Type::GetInt64Ty(Ctx), 0))
148#undef INSTR_PROF_VALUE_NODE
154#ifndef INSTR_PROF_GPU_SECT
155#define INSTR_PROF_GPU_SECT(Type, LLVMType, Name, Initializer)
157#define INSTR_PROF_DATA_DEFINED
178 UniformCountersStart, \
181 UniformCountersStop, \
186#undef INSTR_PROF_GPU_SECT
193#ifndef INSTR_PROF_RAW_HEADER
194#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
196#define INSTR_PROF_DATA_DEFINED
210 UniformCountersBegin ? (
uintptr_t)UniformCountersBegin -
222#undef INSTR_PROF_RAW_HEADER
229#ifndef VALUE_PROF_FUNC_PARAM
230#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
231#define INSTR_PROF_COMMA
233#define INSTR_PROF_DATA_DEFINED
234#define INSTR_PROF_COMMA ,
240#undef VALUE_PROF_FUNC_PARAM
241#undef INSTR_PROF_COMMA
245#ifndef VALUE_PROF_KIND
246#define VALUE_PROF_KIND(Enumerator, Value, Descr)
248#define INSTR_PROF_DATA_DEFINED
274VALUE_PROF_KIND(IPVK_VTableTarget, 2,
"The profiled address point of the vtable")
283#undef VALUE_PROF_KIND
286#undef COVMAP_V2_OR_V3
288#define COVMAP_V2_OR_V3
291#define COVMAP_V2_OR_V3
298#ifndef COVMAP_FUNC_RECORD
299#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
301#define INSTR_PROF_DATA_DEFINED
311#ifdef COVMAP_V2_OR_V3
313 llvm::ConstantInt::get( \
317 llvm::ConstantInt::get( \
320 llvm::ConstantInt::get( \
321 llvm::Type::getInt64Ty(Ctx), FuncHash))
324 llvm::ConstantInt::get( \
328 CoverageMapping.size()), \
331 CoverageMapping, CoverageMapping.size(), \
334#undef COVMAP_FUNC_RECORD
341#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
343#define INSTR_PROF_DATA_DEFINED
346 llvm::ConstantInt::get(Int32Ty, NRecords))
348 llvm::ConstantInt::get(Int32Ty, FilenamesSize))
350 llvm::ConstantInt::get(Int32Ty, CoverageMappingSize))
352 llvm::ConstantInt::get(Int32Ty, CovMapVersion::CurrentVersion))
358#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
360#define INSTR_PROF_DATA_DEFINED
369#ifdef INSTR_PROF_SECT_ENTRY
370#define INSTR_PROF_DATA_DEFINED
414#undef INSTR_PROF_SECT_ENTRY
418#ifdef INSTR_PROF_VALUE_PROF_DATA
419#define INSTR_PROF_DATA_DEFINED
421#define INSTR_PROF_MAX_NUM_VAL_PER_SITE 255
426typedef struct ValueProfRecord {
440 uint8_t SiteCountArray[1];
461 LLVM_ABI void deserializeTo(InstrProfRecord &Record,
462 InstrProfSymtab *SymTab);
490 uint32_t NumValueKinds;
509 LLVM_ABI static std::unique_ptr<ValueProfData>
510 serializeFrom(
const InstrProfRecord &Record);
520 LLVM_ABI static Expected<std::unique_ptr<ValueProfData>>
521 getValueProfData(
const unsigned char *SrcBuffer,
522 const unsigned char *
const SrcBufferEnd,
539 LLVM_ABI void deserializeTo(InstrProfRecord &Record,
540 InstrProfSymtab *SymTab);
541 void operator delete(
void *ptr) { ::operator
delete(ptr); }
561 uint32_t (*GetNumValueKinds)(
const void *
Record);
562 uint32_t (*GetNumValueSites)(
const void *
Record, uint32_t VKind);
563 uint32_t (*GetNumValueData)(
const void *
Record, uint32_t VKind);
564 uint32_t (*GetNumValueDataForSite)(
const void *
R, uint32_t VK, uint32_t S);
571 uint64_t (*RemapValueData)(uint32_t, uint64_t
Value);
572 void (*GetValueForSite)(
const void *
R, InstrProfValueData *Dst, uint32_t
K,
574 ValueProfData *(*AllocValueProfData)(
size_t TotalSizeInBytes);
586#undef INSTR_PROF_VALUE_PROF_DATA
590#ifdef INSTR_PROF_COMMON_API_IMPL
591#define INSTR_PROF_DATA_DEFINED
593#define INSTR_PROF_INLINE inline
594#define INSTR_PROF_NULLPTR nullptr
596#define INSTR_PROF_INLINE
597#define INSTR_PROF_NULLPTR NULL
601#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
613 sizeof(
uint8_t) * NumValueSites;
626 sizeof(InstrProfValueData) * NumValueData;
635 This->NumValueSites));
645 for (
I = 0;
I <
This->NumValueSites;
I++)
646 NumValueData +=
This->SiteCountArray[
I];
656 return (ValueProfRecord *)((
char *)This +
666 return (ValueProfRecord *)((
char *)This +
sizeof(ValueProfData));
679 const void *
Record = Closure->Record;
681 for (Kind = IPVK_First; Kind <= IPVK_Last; Kind++) {
686 Closure->GetNumValueData(Record, Kind));
697 ValueProfRecordClosure *Closure,
700 const void *
Record = Closure->Record;
701 This->Kind = ValueKind;
706 uint32_t ND = Closure->GetNumValueDataForSite(Record, ValueKind, S);
707 This->SiteCountArray[S] = ND;
708 Closure->GetValueForSite(Record, DstVD, ValueKind, S);
722 ValueProfData *DstData) {
728 DstData ? DstData : Closure->AllocValueProfData(TotalSize);
730 VPD->TotalSize = TotalSize;
731 VPD->NumValueKinds = Closure->GetNumValueKinds(Closure->Record);
733 for (Kind = IPVK_First; Kind <= IPVK_Last; Kind++) {
743#undef INSTR_PROF_COMMON_API_IMPL
750#ifndef INSTR_PROF_DATA_DEFINED
752#ifndef INSTR_PROF_DATA_INC
753#define INSTR_PROF_DATA_INC
756#define INSTR_PROF_SIMPLE_QUOTE(x) #x
757#define INSTR_PROF_QUOTE(x) INSTR_PROF_SIMPLE_QUOTE(x)
758#define INSTR_PROF_SIMPLE_CONCAT(x,y) x ## y
759#define INSTR_PROF_CONCAT(x,y) INSTR_PROF_SIMPLE_CONCAT(x,y)
768#define INSTR_PROF_RAW_MAGIC_64 (uint64_t)255 << 56 | (uint64_t)'l' << 48 | \
769 (uint64_t)'p' << 40 | (uint64_t)'r' << 32 | (uint64_t)'o' << 24 | \
770 (uint64_t)'f' << 16 | (uint64_t)'r' << 8 | (uint64_t)129
771#define INSTR_PROF_RAW_MAGIC_32 (uint64_t)255 << 56 | (uint64_t)'l' << 48 | \
772 (uint64_t)'p' << 40 | (uint64_t)'r' << 32 | (uint64_t)'o' << 24 | \
773 (uint64_t)'f' << 16 | (uint64_t)'R' << 8 | (uint64_t)129
776#define INSTR_PROF_RAW_VERSION 11
778#define INSTR_PROF_INDEX_VERSION 14
780#define INSTR_PROF_COVMAP_VERSION 6
795#define VARIANT_MASKS_ALL 0xffffffff00000000ULL
796#define GET_VERSION(V) ((V) & ~VARIANT_MASKS_ALL)
797#define VARIANT_MASK_INSTR_LOOP_ENTRIES (0x1ULL << 55)
798#define VARIANT_MASK_IR_PROF (0x1ULL << 56)
799#define VARIANT_MASK_CSIR_PROF (0x1ULL << 57)
800#define VARIANT_MASK_INSTR_ENTRY (0x1ULL << 58)
801#define VARIANT_MASK_DBG_CORRELATE (0x1ULL << 59)
802#define VARIANT_MASK_BYTE_COVERAGE (0x1ULL << 60)
803#define VARIANT_MASK_FUNCTION_ENTRY_ONLY (0x1ULL << 61)
804#define VARIANT_MASK_MEMPROF (0x1ULL << 62)
805#define VARIANT_MASK_TEMPORAL_PROF (0x1ULL << 63)
806#define INSTR_PROF_RAW_VERSION_VAR __llvm_profile_raw_version
807#define INSTR_PROF_PROFILE_RUNTIME_VAR __llvm_profile_runtime
808#define INSTR_PROF_PROFILE_COUNTER_BIAS_VAR __llvm_profile_counter_bias
809#define INSTR_PROF_PROFILE_BITMAP_BIAS_VAR __llvm_profile_bitmap_bias
810#define INSTR_PROF_PROFILE_SET_TIMESTAMP __llvm_profile_set_timestamp
811#define INSTR_PROF_PROFILE_SAMPLING_VAR __llvm_profile_sampling
815#define INSTR_PROF_PROFILE_NAME_VAR __llvm_profile_filename
819#define INSTR_PROF_SECT_BOUNDS_TABLE __llvm_profile_sections
823#define INSTR_PROF_DATA_COMMON __llvm_prf_data
824#define INSTR_PROF_NAME_COMMON __llvm_prf_names
825#define INSTR_PROF_VNAME_COMMON __llvm_prf_vns
826#define INSTR_PROF_CNTS_COMMON __llvm_prf_cnts
827#define INSTR_PROF_UCNTS_COMMON __llvm_prf_ucnts
828#define INSTR_PROF_BITS_COMMON __llvm_prf_bits
829#define INSTR_PROF_VALS_COMMON __llvm_prf_vals
830#define INSTR_PROF_VNODES_COMMON __llvm_prf_vnds
831#define INSTR_PROF_VTAB_COMMON __llvm_prf_vtab
832#define INSTR_PROF_COVMAP_COMMON __llvm_covmap
833#define INSTR_PROF_COVFUN_COMMON __llvm_covfun
834#define INSTR_PROF_COVDATA_COMMON __llvm_covdata
835#define INSTR_PROF_COVNAME_COMMON __llvm_covnames
836#define INSTR_PROF_COVINIT_COMMON __llvm_covinit
841#define INSTR_PROF_DATA_COFF ".lprfd$M"
842#define INSTR_PROF_NAME_COFF ".lprfn$M"
843#define INSTR_PROF_VNAME_COFF ".lprfvn$M"
844#define INSTR_PROF_CNTS_COFF ".lprfc$M"
845#define INSTR_PROF_UCNTS_COFF ".lprfuc$M"
846#define INSTR_PROF_BITS_COFF ".lprfb$M"
847#define INSTR_PROF_VALS_COFF ".lprfv$M"
848#define INSTR_PROF_VNODES_COFF ".lprfnd$M"
849#define INSTR_PROF_VTAB_COFF ".lprfvt$M"
850#define INSTR_PROF_COVMAP_COFF ".lcovmap$M"
851#define INSTR_PROF_COVFUN_COFF ".lcovfun$M"
855#define INSTR_PROF_COVDATA_COFF ".lcovd"
856#define INSTR_PROF_COVNAME_COFF ".lcovn"
860#define INSTR_PROF_COVINIT_COFF ".lcovd$M"
864#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_DATA_COFF
865#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_NAME_COFF
866#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_CNTS_COFF
867#define INSTR_PROF_BITS_SECT_NAME INSTR_PROF_BITS_COFF
868#define INSTR_PROF_VTAB_SECT_NAME INSTR_PROF_VTAB_COFF
869#define INSTR_PROF_VNAME_SECT_NAME INSTR_PROF_VNAME_COFF
873#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_VALS_COFF
875#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_VNODES_COFF
876#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_COVMAP_COFF
877#define INSTR_PROF_COVFUN_SECT_NAME INSTR_PROF_COVFUN_COFF
878#define INSTR_PROF_COVDATA_SECT_NAME INSTR_PROF_COVDATA_COFF
879#define INSTR_PROF_COVNAME_SECT_NAME INSTR_PROF_COVNAME_COFF
880#define INSTR_PROF_COVINIT_SECT_NAME INSTR_PROF_COVINIT_COFF
883#define INSTR_PROF_DATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_DATA_COMMON)
884#define INSTR_PROF_NAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON)
885#define INSTR_PROF_CNTS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_CNTS_COMMON)
886#define INSTR_PROF_BITS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_BITS_COMMON)
887#define INSTR_PROF_VTAB_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VTAB_COMMON)
888#define INSTR_PROF_VNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNAME_COMMON)
892#define INSTR_PROF_VALS_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON)
894#define INSTR_PROF_VNODES_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON)
895#define INSTR_PROF_COVMAP_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON)
896#define INSTR_PROF_COVFUN_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVFUN_COMMON)
897#define INSTR_PROF_COVDATA_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVDATA_COMMON)
898#define INSTR_PROF_COVNAME_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVNAME_COMMON)
899#define INSTR_PROF_COVINIT_SECT_NAME INSTR_PROF_QUOTE(INSTR_PROF_COVINIT_COMMON)
907#define INSTR_PROF_SECT_START(Sect) \
908 INSTR_PROF_CONCAT(__start_,Sect)
909#define INSTR_PROF_SECT_STOP(Sect) \
910 INSTR_PROF_CONCAT(__stop_,Sect)
913#define INSTR_PROF_VALUE_PROF_FUNC __llvm_profile_instrument_target
914#define INSTR_PROF_VALUE_PROF_FUNC_STR \
915 INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_FUNC)
916#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC __llvm_profile_instrument_memop
917#define INSTR_PROF_VALUE_PROF_MEMOP_FUNC_STR \
918 INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_MEMOP_FUNC)
919#define INSTR_PROF_INSTRUMENT_GPU_FUNC __llvm_profile_instrument_gpu
920#define INSTR_PROF_INSTRUMENT_GPU_FUNC_STR \
921 INSTR_PROF_QUOTE(INSTR_PROF_INSTRUMENT_GPU_FUNC)
924#define INSTR_PROF_DATA_ALIGNMENT 8
929typedef struct InstrProfValueData {
939#undef INSTR_PROF_DATA_DEFINED
942#undef COVMAP_V2_OR_V3
944#ifdef INSTR_PROF_VALUE_PROF_MEMOP_API
947#define INSTR_PROF_INLINE inline
949#define INSTR_PROF_INLINE
982#define INSTR_PROF_NUM_BUCKETS 22
989#if defined(_MSC_VER) && !defined(__clang__)
993int InstProfClzll(
unsigned long long X) {
994 unsigned long LeadZeroIdx = 0;
995#if !defined(_M_ARM64) && !defined(_M_X64)
997 if (_BitScanReverse(&LeadZeroIdx, (
unsigned long)(
X >> 32)))
998 return (
int)(63 - (LeadZeroIdx + 32));
1001 if (_BitScanReverse(&LeadZeroIdx, (
unsigned long)(
X)))
1002 return (
int)(63 - LeadZeroIdx);
1004 if (_BitScanReverse64(&LeadZeroIdx,
X))
return 63 - LeadZeroIdx;
1009int InstProfPopcountll(
unsigned long long X) {
1011 unsigned long long v =
X;
1012 v =
v - ((
v >> 1) & 0x5555555555555555ULL);
1013 v = (
v & 0x3333333333333333ULL) + ((v >> 2) & 0x3333333333333333ULL);
1014 v = (
v + (
v >> 4)) & 0x0F0F0F0F0F0F0F0FULL;
1015 return (
int)((
unsigned long long)(
v * 0x0101010101010101ULL) >> 56);
1021int InstProfClzll(
unsigned long long X) {
return __builtin_clzll(
X); }
1023int InstProfPopcountll(
unsigned long long X) {
return __builtin_popcountll(
X); }
1032InstrProfGetRangeRepValue(
uint64_t Value) {
1036 else if (Value >= 513)
1039 else if (InstProfPopcountll(Value) == 1)
1044 return (UINT64_C(1) << (64 - InstProfClzll(Value) - 1)) + 1;
1051InstrProfIsSingleValRange(
uint64_t Value) {
1055 else if (InstProfPopcountll(Value) == 1)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_GPU_SECT(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VISIBILITY
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Init)
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define offsetof(TYPE, MEMBER)
#define INSTR_PROF_INLINE
#define INSTR_PROF_QUOTE(x)
#define INSTR_PROF_COVINIT_COFF
#define INSTR_PROF_VTAB_COFF
#define INSTR_PROF_COVFUN_COFF
#define INSTR_PROF_UCNTS_COFF
#define INSTR_PROF_CNTS_COFF
#define INSTR_PROF_COVMAP_COMMON
#define INSTR_PROF_VALS_COMMON
#define INSTR_PROF_VTAB_COMMON
#define INSTR_PROF_COVNAME_COFF
#define INSTR_PROF_NAME_COFF
#define INSTR_PROF_VALS_COFF
#define INSTR_PROF_COVMAP_COFF
#define INSTR_PROF_BITS_COMMON
#define INSTR_PROF_VNODES_COMMON
#define INSTR_PROF_SECT_ENTRY(Kind, SectNameCommon, SectNameCoff, Prefix)
#define INSTR_PROF_COVDATA_COMMON
#define INSTR_PROF_DATA_COMMON
#define INSTR_PROF_COVFUN_COMMON
#define INSTR_PROF_COVNAME_COMMON
#define INSTR_PROF_COVDATA_COFF
#define INSTR_PROF_VNAME_COFF
#define INSTR_PROF_VNAME_COMMON
#define INSTR_PROF_UCNTS_COMMON
#define INSTR_PROF_VNODES_COFF
#define INSTR_PROF_COVINIT_COMMON
#define INSTR_PROF_NAME_COMMON
#define INSTR_PROF_DATA_COFF
#define INSTR_PROF_BITS_COFF
#define INSTR_PROF_CNTS_COMMON
static unsigned getSize(unsigned Kind)
static LLVM_ABI ArrayType * get(Type *ElementType, uint64_t NumElements)
This static method is the primary way to construct an ArrayType.
static Constant * getRaw(StringRef Data, uint64_t NumElements, Type *ElementTy)
getRaw() constructor - Return a constant with array type with an element count and element type match...
static LLVM_ABI Constant * getBitCast(Constant *C, Type *Ty, bool OnlyIfReduced=false)
static PointerType * getUnqual(Type *ElementType)
This constructs a pointer to an object of the specified type in the default address space (address sp...
static LLVM_ABI IntegerType * getInt64Ty(LLVMContext &C)
static LLVM_ABI IntegerType * getInt32Ty(LLVMContext &C)
static LLVM_ABI IntegerType * getInt8Ty(LLVMContext &C)
std::enable_if_t< std::is_arithmetic< T >::value, void > swapBytes(T &value)
This is an optimization pass for GlobalISel generic memory operations.
INSTR_PROF_VISIBILITY INSTR_PROF_INLINE uint32_t getValueProfRecordSize(uint32_t NumValueSites, uint32_t NumValueData)
Return the total size of the value profile record including the header and the value data.
RelativeUniformCounterPtr ValuesPtrExpr NumValueSites[IPVK_Last+1]
INSTR_PROF_VISIBILITY ValueProfRecord * getValueProfRecordNext(ValueProfRecord *VPR)
Use this method to advance to the next This ValueProfRecord.
INSTR_PROF_VISIBILITY uint32_t getValueProfRecordHeaderSize(uint32_t NumValueSites)
RelativeUniformCounterPtr ValuesPtrExpr VTableAddr UniformCountersBegin(uintptr_t) UniformCountersBegin -(uintptr_t) DataBegin struct llvm::ValueProfData ValueProfData
This is the header of the data structure that defines the on-disk layout of the value profile data of...
INSTR_PROF_VISIBILITY uint32_t getValueProfDataSize(ValueProfRecordClosure *Closure)
Return the total size in bytes of the on-disk value profile data given the data stored in Record.
LLVM_ABI StringRef getPGOFuncNameVarInitializer(GlobalVariable *NameVar)
Return the initializer in string of the PGO name var NameVar.
INSTR_PROF_VISIBILITY ValueProfRecord * getFirstValueProfRecord(ValueProfData *VPD)
Return the first ValueProfRecord instance.
INSTR_PROF_VISIBILITY ValueProfData * serializeValueProfDataFrom(ValueProfRecordClosure *Closure, ValueProfData *DstData)
Extract value profile data of a function from the Closure and serialize the data into DstData if it i...
INSTR_PROF_VISIBILITY InstrProfValueData * getValueProfRecordValueData(ValueProfRecord *VPR)
Return the pointer to the start of value data array.
RelativeUniformCounterPtr ValuesPtrExpr VTableAddr Count
INSTR_PROF_VISIBILITY void serializeValueProfRecordFrom(ValueProfRecord *This, ValueProfRecordClosure *Closure, uint32_t ValueKind, uint32_t NumValueSites)
Extract value profile data of a function for the profile kind ValueKind from the Closure and serializ...
INSTR_PROF_VISIBILITY INSTR_PROF_INLINE uint32_t getValueProfRecordNumValueData(ValueProfRecord *This)
Return the total number of value data for This record.
struct llvm::ValueProfRecordClosure ValueProfRecordClosure