[profile] minor code restructuring /NFC
This is one of the enabler patch to allow value profiler to allocate counter statically. llvm-svn: 269689
This commit is contained in:
parent
28b759c4c8
commit
f90425e73b
|
@ -88,6 +88,33 @@ INSTR_PROF_DATA(const uint16_t, Int16ArrayTy, NumValueSites[IPVK_Last+1], \
|
|||
#undef INSTR_PROF_DATA
|
||||
/* INSTR_PROF_DATA end. */
|
||||
|
||||
|
||||
/* This is an internal data structure used by value profiler. It
|
||||
* is defined here to allow serialization code sharing by LLVM
|
||||
* to be used in unit test.
|
||||
*
|
||||
* typedef struct ValueProfNode {
|
||||
* // InstrProfValueData VData;
|
||||
* uint64_t Value;
|
||||
* uint64_t Count;
|
||||
* struct ValueProfNode *Next;
|
||||
* } ValueProfNode;
|
||||
*/
|
||||
/* INSTR_PROF_VALUE_NODE start. */
|
||||
#ifndef INSTR_PROF_VALUE_NODE
|
||||
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
|
||||
#else
|
||||
#define INSTR_PROF_DATA_DEFINED
|
||||
#endif
|
||||
INSTR_PROF_VALUE_NODE(uint64_t, llvm::Type::getInt64Ty(Ctx), Value, \
|
||||
ConstantInt::get(llvm::Type::GetInt64Ty(Ctx), 0))
|
||||
INSTR_PROF_VALUE_NODE(uint64_t, llvm::Type::getInt64Ty(Ctx), Count, \
|
||||
ConstantInt::get(llvm::Type::GetInt64Ty(Ctx), 0))
|
||||
INSTR_PROF_VALUE_NODE(PtrToNodeT, llvm::Type::getInt8PtrTy(Ctx), Next, \
|
||||
ConstantInt::get(llvm::Type::GetInt8PtrTy(Ctx), 0))
|
||||
#undef INSTR_PROF_VALUE_NODE
|
||||
/* INSTR_PROF_VALUE_NODE end. */
|
||||
|
||||
/* INSTR_PROF_RAW_HEADER start */
|
||||
/* Definition of member fields of the raw profile header data structure. */
|
||||
#ifndef INSTR_PROF_RAW_HEADER
|
||||
|
@ -610,15 +637,6 @@ typedef struct InstrProfValueData {
|
|||
uint64_t Count;
|
||||
} InstrProfValueData;
|
||||
|
||||
/* This is an internal data structure used by value profiler. It
|
||||
* is defined here to allow serialization code sharing by LLVM
|
||||
* to be used in unit test.
|
||||
*/
|
||||
typedef struct ValueProfNode {
|
||||
InstrProfValueData VData;
|
||||
struct ValueProfNode *Next;
|
||||
} ValueProfNode;
|
||||
|
||||
#endif /* INSTR_PROF_DATA_INC */
|
||||
|
||||
#else
|
||||
|
|
|
@ -61,7 +61,7 @@ COMPILER_RT_VISIBILITY void __llvm_profile_reset_counters(void) {
|
|||
ValueProfNode *CurrentVNode = ValueCounters[i];
|
||||
|
||||
while (CurrentVNode) {
|
||||
CurrentVNode->VData.Count = 0;
|
||||
CurrentVNode->Count = 0;
|
||||
CurrentVNode = CurrentVNode->Next;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,12 @@ typedef struct __llvm_profile_header {
|
|||
#include "InstrProfData.inc"
|
||||
} __llvm_profile_header;
|
||||
|
||||
typedef struct ValueProfNode * PtrToNodeT;
|
||||
typedef struct ValueProfNode {
|
||||
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer) Type Name;
|
||||
#include "InstrProfData.inc"
|
||||
} ValueProfNode;
|
||||
|
||||
/*!
|
||||
* \brief Get number of bytes necessary to pad the argument to eight
|
||||
* byte boundary.
|
||||
|
|
|
@ -85,8 +85,8 @@ __llvm_profile_instrument_target(uint64_t TargetValue, void *Data,
|
|||
|
||||
uint8_t VDataCount = 0;
|
||||
while (CurrentVNode) {
|
||||
if (TargetValue == CurrentVNode->VData.Value) {
|
||||
CurrentVNode->VData.Count++;
|
||||
if (TargetValue == CurrentVNode->Value) {
|
||||
CurrentVNode->Count++;
|
||||
return;
|
||||
}
|
||||
PrevVNode = CurrentVNode;
|
||||
|
@ -101,8 +101,8 @@ __llvm_profile_instrument_target(uint64_t TargetValue, void *Data,
|
|||
if (!CurrentVNode)
|
||||
return;
|
||||
|
||||
CurrentVNode->VData.Value = TargetValue;
|
||||
CurrentVNode->VData.Count++;
|
||||
CurrentVNode->Value = TargetValue;
|
||||
CurrentVNode->Count++;
|
||||
|
||||
uint32_t Success = 0;
|
||||
if (!ValueCounters[CounterIndex])
|
||||
|
@ -200,7 +200,8 @@ static ValueProfNode *getNextNValueData(uint32_t VK, uint32_t Site,
|
|||
unsigned I;
|
||||
ValueProfNode *VNode = StartNode ? StartNode : RTRecord.NodesKind[VK][Site];
|
||||
for (I = 0; I < N; I++) {
|
||||
Dst[I] = VNode->VData;
|
||||
Dst[I].Value = VNode->Value;
|
||||
Dst[I].Count = VNode->Count;
|
||||
VNode = VNode->Next;
|
||||
}
|
||||
return VNode;
|
||||
|
|
Loading…
Reference in New Issue