[compiler-rt] r250561 - Use struct type instead of raw array for raw profile header (NFC)

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 16 15:21:56 PDT 2015


Author: davidxl
Date: Fri Oct 16 17:21:56 2015
New Revision: 250561

URL: http://llvm.org/viewvc/llvm-project?rev=250561&view=rev
Log:
Use struct type instead of raw array for raw profile header (NFC)

This patch introduces a well defined header struct
to represent raw profile header instead of using raw array.
Previously the raw array is used in two different files and
is very error prone when header structure is re-organized.
This is a small cleanup with NFC.


Modified:
    compiler-rt/trunk/lib/profile/InstrProfiling.h
    compiler-rt/trunk/lib/profile/InstrProfilingBuffer.c
    compiler-rt/trunk/lib/profile/InstrProfilingFile.c

Modified: compiler-rt/trunk/lib/profile/InstrProfiling.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfiling.h?rev=250561&r1=250560&r2=250561&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/InstrProfiling.h (original)
+++ compiler-rt/trunk/lib/profile/InstrProfiling.h Fri Oct 16 17:21:56 2015
@@ -27,7 +27,6 @@ typedef uint32_t uintptr_t;
 
 #endif /* defined(__FreeBSD__) && defined(__i386__) */
 
-#define PROFILE_HEADER_SIZE 7
 
 typedef struct __llvm_profile_data {
   const uint32_t NameSize;
@@ -37,6 +36,17 @@ typedef struct __llvm_profile_data {
   uint64_t *const Counters;
 } __llvm_profile_data;
 
+typedef struct __llvm_profile_header {
+  uint64_t Magic;
+  uint64_t Version;
+  uint64_t DataSize;
+  uint64_t CountersSize;
+  uint64_t NamesSize;
+  uint64_t CountersDelta;
+  uint64_t NamesDelta;
+} __llvm_profile_header;
+
+
 /*!
  * \brief Get required size for profile buffer.
  */

Modified: compiler-rt/trunk/lib/profile/InstrProfilingBuffer.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfilingBuffer.c?rev=250561&r1=250560&r2=250561&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/InstrProfilingBuffer.c (original)
+++ compiler-rt/trunk/lib/profile/InstrProfilingBuffer.c Fri Oct 16 17:21:56 2015
@@ -36,7 +36,7 @@ uint64_t __llvm_profile_get_size_for_buf
   /* Match logic in __llvm_profile_write_buffer(). */
   const uint64_t NamesSize = PROFILE_RANGE_SIZE(Names) * sizeof(char);
   const uint64_t Padding = sizeof(uint64_t) - NamesSize % sizeof(uint64_t);
-  return sizeof(uint64_t) * PROFILE_HEADER_SIZE +
+  return sizeof(__llvm_profile_header) +
       PROFILE_RANGE_SIZE(Data) * sizeof(__llvm_profile_data) +
       PROFILE_RANGE_SIZE(Counters) * sizeof(uint64_t) +
       NamesSize + Padding;
@@ -78,14 +78,14 @@ int __llvm_profile_write_buffer_internal
   const char Zeroes[sizeof(uint64_t)] = {0};
 
   /* Create the header. */
-  uint64_t Header[PROFILE_HEADER_SIZE];
-  Header[0] = __llvm_profile_get_magic();
-  Header[1] = __llvm_profile_get_version();
-  Header[2] = DataSize;
-  Header[3] = CountersSize;
-  Header[4] = NamesSize;
-  Header[5] = (uintptr_t)CountersBegin;
-  Header[6] = (uintptr_t)NamesBegin;
+  __llvm_profile_header Header;
+  Header.Magic = __llvm_profile_get_magic();
+  Header.Version = __llvm_profile_get_version();
+  Header.DataSize = DataSize;
+  Header.CountersSize = CountersSize;
+  Header.NamesSize = NamesSize;
+  Header.CountersDelta = (uintptr_t)CountersBegin;
+  Header.NamesDelta = (uintptr_t)NamesBegin;
 
   /* Write the data. */
 #define UPDATE_memcpy(Data, Size) \
@@ -93,7 +93,7 @@ int __llvm_profile_write_buffer_internal
     memcpy(Buffer, Data, Size);   \
     Buffer += Size;               \
   } while (0)
-  UPDATE_memcpy(Header,  PROFILE_HEADER_SIZE * sizeof(uint64_t));
+  UPDATE_memcpy(&Header,  sizeof(__llvm_profile_header));
   UPDATE_memcpy(DataBegin,     DataSize      * sizeof(__llvm_profile_data));
   UPDATE_memcpy(CountersBegin, CountersSize  * sizeof(uint64_t));
   UPDATE_memcpy(NamesBegin,    NamesSize     * sizeof(char));

Modified: compiler-rt/trunk/lib/profile/InstrProfilingFile.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/InstrProfilingFile.c?rev=250561&r1=250560&r2=250561&view=diff
==============================================================================
--- compiler-rt/trunk/lib/profile/InstrProfilingFile.c (original)
+++ compiler-rt/trunk/lib/profile/InstrProfilingFile.c Fri Oct 16 17:21:56 2015
@@ -35,19 +35,19 @@ static int writeFile(FILE *File) {
   const char Zeroes[sizeof(uint64_t)] = {0};
 
   /* Create the header. */
-  uint64_t Header[PROFILE_HEADER_SIZE];
-  Header[0] = __llvm_profile_get_magic();
-  Header[1] = __llvm_profile_get_version();
-  Header[2] = DataSize;
-  Header[3] = CountersSize;
-  Header[4] = NamesSize;
-  Header[5] = (uintptr_t)CountersBegin;
-  Header[6] = (uintptr_t)NamesBegin;
+  __llvm_profile_header Header;
+  Header.Magic = __llvm_profile_get_magic();
+  Header.Version = __llvm_profile_get_version();
+  Header.DataSize = DataSize;
+  Header.CountersSize = CountersSize;
+  Header.NamesSize = NamesSize;
+  Header.CountersDelta = (uintptr_t)CountersBegin;
+  Header.NamesDelta = (uintptr_t)NamesBegin;
 
   /* Write the data. */
 #define CHECK_fwrite(Data, Size, Length, File) \
   do { if (fwrite(Data, Size, Length, File) != Length) return -1; } while (0)
-  CHECK_fwrite(Header,        sizeof(uint64_t), PROFILE_HEADER_SIZE, File);
+  CHECK_fwrite(&Header,        sizeof(__llvm_profile_header), 1, File);
   CHECK_fwrite(DataBegin,     sizeof(__llvm_profile_data), DataSize, File);
   CHECK_fwrite(CountersBegin, sizeof(uint64_t), CountersSize, File);
   CHECK_fwrite(NamesBegin,    sizeof(char), NamesSize, File);




More information about the llvm-commits mailing list