From 77b5e3816106051a5c83ffcf482bff19a17cb852 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Sun, 22 Nov 2015 02:05:50 +0000 Subject: [PATCH] [PGO] move raw magic and version def to InstrProfData.inc These are shared definitions too. (NFC) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253809 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ProfileData/InstrProf.h | 29 ++++++---------------- include/llvm/ProfileData/InstrProfData.inc | 18 ++++++++++++++ 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/include/llvm/ProfileData/InstrProf.h b/include/llvm/ProfileData/InstrProf.h index 571e2881dce..4cd4ef9ee8f 100644 --- a/include/llvm/ProfileData/InstrProf.h +++ b/include/llvm/ProfileData/InstrProf.h @@ -19,6 +19,7 @@ #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSet.h" #include "llvm/IR/GlobalValue.h" +#include "llvm/ProfileData/InstrProfData.inc" #include "llvm/Support/Endian.h" #include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ErrorOr.h" @@ -570,31 +571,15 @@ struct Header { namespace RawInstrProf { -const uint64_t Version = 2; +const uint64_t Version = INSTR_PROF_RAW_VERSION; -// 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 -// invalid UTF-8, and high enough to be interesting. -// 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 - -template -inline uint64_t getMagic(); -template <> -inline uint64_t getMagic() { - return 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); +template inline uint64_t getMagic(); +template <> inline uint64_t getMagic() { + return INSTR_PROF_RAW_MAGIC_64; } -template <> -inline uint64_t getMagic() { - return 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); +template <> inline uint64_t getMagic() { + return INSTR_PROF_RAW_MAGIC_32; } // Per-function profile data header/control structure. diff --git a/include/llvm/ProfileData/InstrProfData.inc b/include/llvm/ProfileData/InstrProfData.inc index 6c9bf2725a9..1452baeb06f 100644 --- a/include/llvm/ProfileData/InstrProfData.inc +++ b/include/llvm/ProfileData/InstrProfData.inc @@ -176,6 +176,24 @@ COVMAP_FUNC_RECORD(const uint64_t, llvm::Type::getInt64Ty(Ctx), FuncHash, \ #ifndef INSTR_PROF_DATA_INC_ #define INSTR_PROF_DATA_INC_ +/* 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 + * invalid UTF-8, and high enough to be interesting. + * 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) + +/* Raw profile format version. */ +#define INSTR_PROF_RAW_VERSION 2 #endif /* INSTR_PROF_DATA_INC_ */