[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