const char PROFILEDATA_MAGIC[4] = {'L', 'P', 'R', 'F'};
const uint32_t PROFILEDATA_VERSION = 1;
+const uint32_t PROFILEDATA_HEADER_SIZE = 24;
const error_category &profiledata_category();
#define LLVM_PROFILE_PROFILEDATA_WRITER_H__
#include "llvm/ADT/StringMap.h"
+#include "llvm/Profile/ProfileData.h"
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/raw_ostream.h"
namespace llvm {
-struct __attribute__((packed)) ProfileDataHeader {
- char Magic[4];
- uint32_t Version;
- uint32_t DataStart;
- uint32_t Padding;
- uint64_t MaxFunctionCount;
-};
-
/// Writer for instrumentation based profile data
class ProfileDataWriter {
StringMap<size_t> FunctionOffsets;
void write64(raw_ostream &OS, uint64_t Value);
public:
ProfileDataWriter()
- : DataStart(sizeof(ProfileDataHeader)), MaxFunctionCount(0) {}
+ : DataStart(PROFILEDATA_HEADER_SIZE), MaxFunctionCount(0) {}
void addFunctionCounts(StringRef FuncName, uint64_t FunctionHash,
uint64_t NumCounters, const uint64_t *Counters);