forked from OSchip/llvm-project
[PGO] move raw magic and version def to InstrProfData.inc
These are shared definitions too. (NFC) llvm-svn: 253809
This commit is contained in:
parent
5cdf936764
commit
2a28dda24b
|
@ -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.
|
||||
|
|
|
@ -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_ */
|
||||
|
||||
|
|
Loading…
Reference in New Issue