From 0e13c07553708c5ec5247aac8a67a7a263169902 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Sun, 22 Nov 2015 00:06:39 +0000 Subject: [PATCH 1/1] [PGO] Move Raw Header def into template file InstrProfData.inc To enable code sharing with compiler-rt (NFC) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253803 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ProfileData/InstrProf.h | 12 +----- include/llvm/ProfileData/InstrProfData.inc | 44 ++++++++++++++++------ 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/include/llvm/ProfileData/InstrProf.h b/include/llvm/ProfileData/InstrProf.h index 2ba1335dce9..b93d5d0b966 100644 --- a/include/llvm/ProfileData/InstrProf.h +++ b/include/llvm/ProfileData/InstrProf.h @@ -614,16 +614,8 @@ template struct LLVM_ALIGNAS(8) ProfileData { // compiler-rt/lib/profile/InstrProfilingFile.c and // InstrProfilingBuffer.c. struct Header { - const uint64_t Magic; - const uint64_t Version; - const uint64_t DataSize; - const uint64_t CountersSize; - const uint64_t NamesSize; - const uint64_t CountersDelta; - const uint64_t NamesDelta; - const uint64_t ValueKindLast; - const uint64_t ValueDataSize; - const uint64_t ValueDataDelta; +#define INSTR_PROF_RAW_HEADER(Type, Name, Init) Type Name; +#include "llvm/ProfileData/InstrProfData.inc" }; } // end namespace RawInstrProf diff --git a/include/llvm/ProfileData/InstrProfData.inc b/include/llvm/ProfileData/InstrProfData.inc index b66df7696ae..9893c59b139 100644 --- a/include/llvm/ProfileData/InstrProfData.inc +++ b/include/llvm/ProfileData/InstrProfData.inc @@ -38,11 +38,14 @@ // }; //===----------------------------------------------------------------------===// +/* INSTR_PROF_DATA start. */ +/* Definition of member fields of the per-function control structure. */ #ifndef INSTR_PROF_DATA #define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer) +#else +#define INSTR_PROF_DATA_DEFINED #endif -// INSTR_PROF_DATA_START INSTR_PROF_DATA(const uint32_t, llvm::Type::getInt32Ty(Ctx), NameSize, \ ConstantInt::get(llvm::Type::getInt32Ty(Ctx), \ NamePtr->getType()->getPointerElementType()->getArrayNumElements())) @@ -58,22 +61,44 @@ INSTR_PROF_DATA(const IntPtrT, llvm::Type::getInt64PtrTy(Ctx), CounterPtr, \ llvm::Type::getInt64PtrTy(Ctx))) INSTR_PROF_DATA(const IntPtrT, llvm::Type::getInt8PtrTy(Ctx), FunctionPointer, \ FunctionAddr) -INSTR_PROF_DATA(const IntPtrT, llvm::Type::getInt8PtrTy(Ctx), Values, \ +INSTR_PROF_DATA(IntPtrT, llvm::Type::getInt8PtrTy(Ctx), Values, \ ConstantPointerNull::get(Int8PtrTy)) INSTR_PROF_DATA(const uint16_t, Int16ArrayTy, NumValueSites[IPVK_Last+1], \ ConstantArray::get(Int16ArrayTy, Int16ArrayVals)) -// INSTR_PROF_DATA_END - -#ifdef INSTR_PROF_DATA #undef INSTR_PROF_DATA + +/* INSTR_PROF_DATA end. */ + +/* INSTR_PROF_RAW_HEADER start */ +/* Definition of member fields of the raw profile header data structure. */ +#ifndef INSTR_PROF_RAW_HEADER +#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer) +#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) +#undef INSTR_PROF_RAW_HEADER +/* INSTR_PROF_RAW_HEADER end */ +/* COVMAP_FUNC_RECORD start */ +/* Definition of member fields of the function record structure in coverage + * map. + */ #ifndef COVMAP_FUNC_RECORD #define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer) +#else +#define INSTR_PROF_DATA_DEFINED #endif - -// COVMAP_FUNC_RECORD_START COVMAP_FUNC_RECORD(const IntPtrT, llvm::Type::getInt8PtrTy(Ctx), \ NamePtr, llvm::ConstantExpr::getBitCast(NamePtr, \ llvm::Type::getInt8PtrTy(Ctx))) @@ -85,10 +110,7 @@ COVMAP_FUNC_RECORD(const uint32_t, llvm::Type::getInt32Ty(Ctx), DataSize, \ CoverageMapping.size())) COVMAP_FUNC_RECORD(const uint64_t, llvm::Type::getInt64Ty(Ctx), FuncHash, \ llvm::ConstantInt::get(llvm::Type::getInt64Ty(Ctx), FuncHash)) -// COVMAP_FUNC_RECORD_END - -#ifdef COVMAP_FUNC_RECORD #undef COVMAP_FUNC_RECORD -#endif +/* COVMAP_FUNC_RECORD end. */ -- 2.34.1