58#ifndef LLVM_PROFILEDATA_CTXINSTRCONTEXTNODE_H
59#define LLVM_PROFILEDATA_CTXINSTRCONTEXTNODE_H
65namespace ctx_profile {
77 :
Guid(
Guid), Next(Next), NumCounters(NumCounters),
78 NumCallsites(NumCallsites) {}
89 return reinterpret_cast<uint64_t *
>(addr_after);
128#define CTXPROF_FUNCTION_DATA(PTRDECL, CONTEXT_PTR, VOLATILE_PTRDECL, \
130 PTRDECL(FunctionData, Next) \
131 VOLATILE_PTRDECL(void, EntryAddress) \
133 VOLATILE_PTRDECL(ContextNode, FlatCtx) \
150 size_t BufferSize) = 0;
ContextNode(GUID Guid, uint32_t NumCounters, uint32_t NumCallsites, ContextNode *Next=nullptr)
uint64_t entrycount() const
const uint64_t * counters() const
static size_t getAllocSize(uint32_t NumCounters, uint32_t NumCallsites)
uint32_t callsites_size() const
ContextNode *const * subContexts() const
ContextNode ** subContexts()
ContextNode * next() const
uint32_t counters_size() const
Abstraction for the parameter passed to __llvm_ctx_profile_fetch.
virtual void writeFlat(ctx_profile::GUID Guid, const uint64_t *Buffer, size_t BufferSize)=0
virtual void startFlatSection()=0
virtual void endContextSection()=0
virtual void writeContextual(const ctx_profile::ContextNode &RootNode, const ctx_profile::ContextNode *Unhandled, uint64_t TotalRootEntryCount)=0
virtual void endFlatSection()=0
virtual void startContextSection()=0
virtual ~ProfileWriter()=default
This is an optimization pass for GlobalISel generic memory operations.