[compiler-rt] r253883 - [PGO] Start use InstrProf template file in compiler-rt/lib/profile
Xinliang David Li via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 23 09:09:41 PST 2015
Author: davidxl
Date: Mon Nov 23 11:09:40 2015
New Revision: 253883
URL: http://llvm.org/viewvc/llvm-project?rev=253883&view=rev
Log:
[PGO] Start use InstrProf template file in compiler-rt/lib/profile
- Replace use of __llvm_profile_value_data with common data structure.
- Remve duplicate InstrProfValueNode
Modified:
compiler-rt/trunk/lib/profile/InstrProfiling.c
compiler-rt/trunk/lib/profile/InstrProfiling.h
Modified: compiler-rt/trunk/lib/profile/InstrProfiling.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfiling.c?rev=253883&r1=253882&r2=253883&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/InstrProfiling.c (original)
+++ compiler-rt/trunk/lib/profile/InstrProfiling.c Mon Nov 23 11:09:40 2015
@@ -12,11 +12,6 @@
#include <stdlib.h>
#include <string.h>
-typedef struct ValueProfNode {
- __llvm_profile_value_data VData;
- struct ValueProfNode *Next;
-} ValueProfNode;
-
LLVM_LIBRARY_VISIBILITY uint64_t __llvm_profile_get_magic(void) {
/* Magic number to detect file format and endianness.
*
@@ -70,7 +65,7 @@ LLVM_LIBRARY_VISIBILITY void __llvm_prof
ValueProfNode *CurrentVNode = ValueCounters[i];
while (CurrentVNode) {
- CurrentVNode->VData.NumTaken = 0;
+ CurrentVNode->VData.Count = 0;
CurrentVNode = CurrentVNode->Next;
}
}
@@ -121,23 +116,23 @@ LLVM_LIBRARY_VISIBILITY void
__llvm_profile_instrument_target(uint64_t TargetValue, void *Data,
uint32_t CounterIndex) {
- __llvm_profile_data *VData = (__llvm_profile_data *)Data;
- if (!VData)
+ __llvm_profile_data *PData = (__llvm_profile_data *)Data;
+ if (!PData)
return;
- if (!VData->Values) {
- if (!allocateValueProfileCounters(VData))
+ if (!PData->Values) {
+ if (!allocateValueProfileCounters(PData))
return;
}
- ValueProfNode **ValueCounters = (ValueProfNode **)VData->Values;
+ ValueProfNode **ValueCounters = (ValueProfNode **)PData->Values;
ValueProfNode *PrevVNode = NULL;
ValueProfNode *CurrentVNode = ValueCounters[CounterIndex];
uint8_t VDataCount = 0;
while (CurrentVNode) {
- if (TargetValue == CurrentVNode->VData.TargetValue) {
- CurrentVNode->VData.NumTaken++;
+ if (TargetValue == CurrentVNode->VData.Value) {
+ CurrentVNode->VData.Count++;
return;
}
PrevVNode = CurrentVNode;
@@ -152,8 +147,8 @@ __llvm_profile_instrument_target(uint64_
if (!CurrentVNode)
return;
- CurrentVNode->VData.TargetValue = TargetValue;
- CurrentVNode->VData.NumTaken++;
+ CurrentVNode->VData.Value = TargetValue;
+ CurrentVNode->VData.Count++;
uint32_t Success = 0;
if (!ValueCounters[CounterIndex])
@@ -201,8 +196,8 @@ __llvm_profile_gather_value_data(uint8_t
uint8_t Padding = __llvm_profile_get_num_padding_bytes(NumVSites);
uint8_t *PerSiteCountPtr = PerSiteCountsHead;
- __llvm_profile_value_data *VDataPtr =
- (__llvm_profile_value_data *)(PerSiteCountPtr + NumVSites + Padding);
+ InstrProfValueData *VDataPtr =
+ (InstrProfValueData *)(PerSiteCountPtr + NumVSites + Padding);
for (i = 0; i < NumVSites; ++i) {
Modified: compiler-rt/trunk/lib/profile/InstrProfiling.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfiling.h?rev=253883&r1=253882&r2=253883&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/InstrProfiling.h (original)
+++ compiler-rt/trunk/lib/profile/InstrProfiling.h Mon Nov 23 11:09:40 2015
@@ -45,17 +45,14 @@ typedef unsigned long int uintptr_t;
#endif /* defined(__FreeBSD__) && defined(__i386__) */
+#include "InstrProfData.inc"
+
enum ValueKind {
IPVK_IndirectCallTarget = 0,
IPVK_First = IPVK_IndirectCallTarget,
IPVK_Last = IPVK_IndirectCallTarget
};
-typedef struct __llvm_profile_value_data {
- uint64_t TargetValue;
- uint64_t NumTaken;
-} __llvm_profile_value_data;
-
typedef void *IntPtrT;
typedef struct LLVM_ALIGNAS(8) __llvm_profile_data {
const uint32_t NameSize;
More information about the llvm-commits
mailing list