[PGO] move raw magic and version def to InstrProfData.inc

These are shared definitions too. (NFC)

llvm-svn: 253809
This commit is contained in:
Xinliang David Li 2015-11-22 02:05:50 +00:00
parent 5cdf936764
commit 2a28dda24b
2 changed files with 25 additions and 22 deletions

View File

@ -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 <class IntPtrT>
inline uint64_t getMagic();
template <>
inline uint64_t getMagic<uint64_t>() {
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 <class IntPtrT> inline uint64_t getMagic();
template <> inline uint64_t getMagic<uint64_t>() {
return INSTR_PROF_RAW_MAGIC_64;
}
template <>
inline uint64_t getMagic<uint32_t>() {
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<uint32_t>() {
return INSTR_PROF_RAW_MAGIC_32;
}
// Per-function profile data header/control structure.

View File

@ -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_ */