Fix a typo introduced in previous patches
[oota-llvm.git] / include / llvm / ProfileData / InstrProfData.inc
index 31173cb7ee6d0ed18d785fa7f619a1e48e92efcb..5a61782ae7e938276cedcdc3bf3f9ee560331c5a 100644 (file)
@@ -94,16 +94,16 @@ INSTR_PROF_DATA(const uint16_t, Int16ArrayTy, NumValueSites[IPVK_Last+1], \
 #else
 #define INSTR_PROF_DATA_DEFINED
 #endif
-INSTR_PROF_RAW_HEADER(const uint64_t, Magic, __llvm_profile_get_magic())
-INSTR_PROF_RAW_HEADER(const uint64_t, Version, __llvm_profile_get_version())
-INSTR_PROF_RAW_HEADER(const uint64_t, DataSize, DataSize)
-INSTR_PROF_RAW_HEADER(const uint64_t, CountersSize, CountersSize)
-INSTR_PROF_RAW_HEADER(const uint64_t, NamesSize,  NameSize)
-INSTR_PROF_RAW_HEADER(const uint64_t, CountersDelta, (uintptr_t)CountersBegin)
-INSTR_PROF_RAW_HEADER(const uint64_t, NamesDelta, (uintptr_t)NamesBegin)
-INSTR_PROF_RAW_HEADER(const uint64_t, ValueKindLast, IPVK_Last)
-INSTR_PROF_RAW_HEADER(const uint64_t, ValueDataSize, ValueDataSize)
-INSTR_PROF_RAW_HEADER(const uint64_t, ValueDataDelta, (uintptr_t)ValueDataBegin)
+INSTR_PROF_RAW_HEADER(uint64_t, Magic, __llvm_profile_get_magic())
+INSTR_PROF_RAW_HEADER(uint64_t, Version, __llvm_profile_get_version())
+INSTR_PROF_RAW_HEADER(uint64_t, DataSize, DataSize)
+INSTR_PROF_RAW_HEADER(uint64_t, CountersSize, CountersSize)
+INSTR_PROF_RAW_HEADER(uint64_t, NamesSize,  NamesSize)
+INSTR_PROF_RAW_HEADER(uint64_t, CountersDelta, (uintptr_t)CountersBegin)
+INSTR_PROF_RAW_HEADER(uint64_t, NamesDelta, (uintptr_t)NamesBegin)
+INSTR_PROF_RAW_HEADER(uint64_t, ValueKindLast, IPVK_Last)
+INSTR_PROF_RAW_HEADER(uint64_t, ValueDataSize, ValueDataSize)
+INSTR_PROF_RAW_HEADER(uint64_t, ValueDataDelta, (uintptr_t)ValueDataBegin)
 #undef INSTR_PROF_RAW_HEADER
 /* INSTR_PROF_RAW_HEADER  end */
 
@@ -183,22 +183,19 @@ COVMAP_FUNC_RECORD(const uint64_t, llvm::Type::getInt64Ty(Ctx), FuncHash, \
 #define INSTR_PROF_SIMPLE_CONCAT(x,y) x ## y
 #define INSTR_PROF_CONCAT(x,y) INSTR_PROF_SIMPLE_CONCAT(x,y)
 
-
 /* Magic number to detect file format and endianness.
- * Use 255 at one end, since no UTF-8 file can use that character.  Avoid 0,             
- * so that utilities, like strings, don't grab it as a string.  129 is also              
+ * Use 255 at one end, since no UTF-8 file can use that character.  Avoid 0,
+ * so that utilities, like strings, don't grab it as a string.  129 is also
  * invalid UTF-8, and high enough to be interesting.
- * Use "lprofr" in the centre to stand for "LLVM Profile Raw", or "lprofR"               
+ * Use "lprofr" in the centre to stand for "LLVM Profile Raw", or "lprofR"
  * for 32-bit platforms.
- * The magic and version need to be kept in sync with                                    
- * projects/compiler-rt/lib/profile/InstrProfiling.c                                     
  */
-#define INSTR_PROF_RAW_MAGIC_64 uint64_t(255) << 56 | uint64_t('l') << 48 | \
-       uint64_t('p') << 40 | uint64_t('r') << 32 | uint64_t('o') << 24 |  \
-        uint64_t('f') << 16 | uint64_t('r') << 8 | uint64_t(129)
-#define INSTR_PROF_RAW_MAGIC_32 uint64_t(255) << 56 | uint64_t('l') << 48 | \
-       uint64_t('p') << 40 | uint64_t('r') << 32 | uint64_t('o') << 24 |  \
-        uint64_t('f') << 16 | uint64_t('R') << 8 | uint64_t(129)
+#define INSTR_PROF_RAW_MAGIC_64 (uint64_t)255 << 56 | (uint64_t)'l' << 48 | \
+       (uint64_t)'p' << 40 | (uint64_t)'r' << 32 | (uint64_t)'o' << 24 |  \
+        (uint64_t)'f' << 16 | (uint64_t)'r' << 8 | (uint64_t)129
+#define INSTR_PROF_RAW_MAGIC_32 (uint64_t)255 << 56 | (uint64_t)'l' << 48 | \
+       (uint64_t)'p' << 40 | (uint64_t)'r' << 32 | (uint64_t)'o' << 24 |  \
+        (uint64_t)'f' << 16 | (uint64_t)'R' << 8 | (uint64_t)129
 
 /* Raw profile format version. */
 #define INSTR_PROF_RAW_VERSION 2
@@ -230,6 +227,28 @@ COVMAP_FUNC_RECORD(const uint64_t, llvm::Type::getInt64Ty(Ctx), FuncHash, \
 #define INSTR_PROF_VALUE_PROF_FUNC_STR \
         INSTR_PROF_QUOTE(INSTR_PROF_VALUE_PROF_FUNC)
 
+/* InstrProfile per-function control data alignment.  */
+#define INSTR_PROF_DATA_ALIGNMENT 8
+
+/* The data structure that represents a tracked value by the
+ * value profiler.
+ */
+typedef struct InstrProfValueData {
+  /* Profiled value. */
+  uint64_t Value;
+  /* Number of times the value appears in the training run. */
+  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