#include #include #include #include #include #include #include #include #include #include #include #include "llvm/ProfileData/InstrProfData.inc"">

LLVM: include/llvm/ProfileData/Coverage/CoverageMapping.h File Reference (original) (raw)

#include "[llvm/ADT/ArrayRef.h](ArrayRef%5F8h%5Fsource.html)"
#include "[llvm/ADT/BitVector.h](BitVector%5F8h%5Fsource.html)"
#include "[llvm/ADT/DenseMap.h](DenseMap%5F8h%5Fsource.html)"
#include "[llvm/ADT/DenseSet.h](DenseSet%5F8h%5Fsource.html)"
#include "[llvm/ADT/Hashing.h](Hashing%5F8h%5Fsource.html)"
#include "[llvm/ADT/StringRef.h](StringRef%5F8h%5Fsource.html)"
#include "[llvm/ADT/iterator.h](iterator%5F8h%5Fsource.html)"
#include "[llvm/ADT/iterator_range.h](iterator%5F%5Frange%5F8h%5Fsource.html)"
#include "[llvm/Object/BuildID.h](BuildID%5F8h%5Fsource.html)"
#include "[llvm/ProfileData/Coverage/MCDCTypes.h](MCDCTypes%5F8h%5Fsource.html)"
#include "[llvm/ProfileData/InstrProf.h](InstrProf%5F8h%5Fsource.html)"
#include "[llvm/Support/Alignment.h](Alignment%5F8h%5Fsource.html)"
#include "[llvm/Support/Compiler.h](Compiler%5F8h%5Fsource.html)"
#include "[llvm/Support/Debug.h](Support%5F2Debug%5F8h%5Fsource.html)"
#include "[llvm/Support/Endian.h](Endian%5F8h%5Fsource.html)"
#include "[llvm/Support/Error.h](llvm%5F2Support%5F2Error%5F8h%5Fsource.html)"
#include "[llvm/Support/raw_ostream.h](raw%5F%5Fostream%5F8h%5Fsource.html)"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <iterator>
#include <map>
#include <memory>
#include <optional>
#include <sstream>
#include <string>
#include <system_error>
#include <utility>
#include <vector>
#include "[llvm/ProfileData/InstrProfData.inc](InstrProfData%5F8inc%5Fsource.html)"

Go to the source code of this file.

Classes
class llvm::coverage::CoverageMapError
struct llvm::coverage::Counter
A Counter is an abstract value that describes how to compute the execution count for a region of code using the collected profile count data. More...
struct llvm::coverage::CounterExpression
A Counter expression is a value that represents an arithmetic operation with two counters. More...
class llvm::coverage::CounterExpressionBuilder
A Counter expression builder is used to construct the counter expressions. More...
struct llvm::coverage::CounterMappingRegion
A Counter mapping region associates a source range with a specific counter. More...
struct llvm::coverage::CountedRegion
Associates a source range with an execution count. More...
struct llvm::coverage::MCDCRecord
MCDC Record grouping all information together. More...
class llvm::coverage::MCDCRecord::TestVector
Emulate SmallVector with a pair of BitVector. More...
class llvm::coverage::mcdc::TVIdxBuilder
Compute TestVector Indices "TVIdx" from the Conds graph. More...
struct llvm::coverage::mcdc::TVIdxBuilder::MCDCNode
class llvm::coverage::CounterMappingContext
A Counter mapping context is used to connect the counters, expressions and the obtained counter values. More...
struct llvm::coverage::FunctionRecord
Code coverage information for a single function. More...
class llvm::coverage::FunctionRecordIterator
Iterator over Functions, optionally filtered to a single file. More...
struct llvm::coverage::ExpansionRecord
Coverage information for a macro expansion or #included file. More...
struct llvm::coverage::CoverageSegment
The execution count information starting at a point in a file. More...
class llvm::coverage::InstantiationGroup
An instantiation group contains a FunctionRecord list, such that each record corresponds to a distinct instantiation of the same function. More...
class llvm::coverage::CoverageData
Coverage information to be processed or displayed. More...
class llvm::coverage::CoverageMapping
The mapping of profile information to coverage data. More...
class llvm::coverage::LineCoverageStats
Coverage statistics for a single line. More...
class llvm::coverage::LineCoverageIterator
An iterator over the LineCoverageStats objects for lines described by a CoverageData instance. More...
struct llvm::coverage::CovMapFunctionRecordV1< IntPtrT >
struct llvm::coverage::CovMapFunctionRecordV2
struct llvm::coverage::CovMapFunctionRecordV3
struct llvm::coverage::CovMapHeader
struct llvm::coverage::CovMapTraits< CovMapVersion, IntPtrT >
struct llvm::coverage::CovMapTraits< CovMapVersion::Version3, IntPtrT >
struct llvm::coverage::CovMapTraits< CovMapVersion::Version2, IntPtrT >
struct llvm::coverage::CovMapTraits< CovMapVersion::Version1, IntPtrT >
struct llvm::DenseMapInfo< coverage::CounterExpression >
Provide DenseMapInfo for CounterExpression. More...
Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
namespace llvm::object
namespace llvm::vfs
namespace llvm::coverage
namespace llvm::coverage::mcdc
namespace llvm::coverage::accessors
This namespace defines accessors shared by different versions of coverage mapping records.
Macros
#define COVMAP_V1
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Init)
#define INSTR_PROF_VISIBILITY
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define INSTR_PROF_DATA_DEFINED
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define COVMAP_V2
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Init)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_V2_OR_V3
#define INSTR_PROF_DATA_DEFINED
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define COVMAP_V3
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Init)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_V2_OR_V3
#define INSTR_PROF_DATA_DEFINED
#define COVMAP_HEADER(Type, LLVMType, Name, Initializer)
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
#define COVMAP_HEADER(Type, LLVMType, Name, Init)
#define INSTR_PROF_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_VALUE_NODE(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_RAW_HEADER(Type, Name, Initializer)
#define VALUE_PROF_FUNC_PARAM(ArgType, ArgName, ArgLLVMType)
#define INSTR_PROF_COMMA
#define VALUE_PROF_KIND(Enumerator, Value, Descr)
#define COVMAP_FUNC_RECORD(Type, LLVMType, Name, Initializer)
#define INSTR_PROF_DATA_DEFINED
#define COVINIT_FUNC(Type, LLVMType, Name, Initializer)
Enumerations
enum class llvm::coverage::coveragemap_error { llvm::coverage::success = 0 , llvm::coverage::eof, llvm::coverage::no_data_found, llvm::coverage::unsupported_version, llvm::coverage::truncated, llvm::coverage::malformed, llvm::coverage::decompression_failed, llvm::coverage::invalid_or_missing_arch_specifier }
enum llvm::coverage::CovMapVersion { llvm::coverage::Version1 = 0 , llvm::coverage::Version2 = 1 , llvm::coverage::Version3 = 2 , llvm::coverage::Version4 = 3 , llvm::coverage::Version5 = 4 , llvm::coverage::Version6 = 5 , llvm::coverage::Version7 = 6 , llvm::coverage::CurrentVersion = INSTR_PROF_COVMAP_VERSION }
enum class llvm::coverage::TestingFormatVersion : uint64_t { llvm::coverage::Version1 = 0x6174616474736574 , llvm::coverage::Version2 = 1 , llvm::coverage::CurrentVersion = Version2 }
Functions
LLVM_ABI const std::error_category & llvm::coverage::coveragemap_category ()
std::error_code llvm::coverage::make_error_code (coveragemap_error E)
static iterator_range< LineCoverageIterator > llvm::coverage::getLineCoverageStats (const coverage::CoverageData &CD)
Get a LineCoverageIterator range for the lines described by CD.
template<class FuncRecordTy, llvm::endianness Endian>
uint64_t llvm::coverage::accessors::getFuncHash (const FuncRecordTy *Record)
Return the structural hash associated with the function.
template<class FuncRecordTy, llvm::endianness Endian>
uint64_t llvm::coverage::accessors::getDataSize (const FuncRecordTy *Record)
Return the coverage map data size for the function.
template<class FuncRecordTy, llvm::endianness Endian>
uint64_t llvm::coverage::accessors::getFuncNameRef (const FuncRecordTy *Record)
Return the function lookup key. The value is considered opaque.
template<class FuncRecordTy, llvm::endianness Endian>
Error llvm::coverage::accessors::getFuncNameViaRef (const FuncRecordTy *Record, InstrProfSymtab &ProfileNames, StringRef &FuncName)
Return the PGO name of the function.
template<class FuncRecordTy, llvm::endianness Endian>
StringRef llvm::coverage::accessors::getCoverageMappingOutOfLine (const FuncRecordTy *Record, const char *MappingBuf)
Read coverage mapping out-of-line, from MappingBuf.
template<class FuncRecordTy, llvm::endianness Endian>
std::pair< const char *, const FuncRecordTy * > llvm::coverage::accessors::advanceByOneOutOfLine (const FuncRecordTy *Record, const char *MappingBuf)
Advance to the next out-of-line coverage mapping and its associated function record.

COVINIT_FUNC [1/4]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [2/4]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [3/4]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVINIT_FUNC [4/4]

#define COVINIT_FUNC ( Type,
LLVMType,
Name,
Initializer )

COVMAP_FUNC_RECORD [1/4]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Init )

COVMAP_FUNC_RECORD [2/4]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Init )

COVMAP_FUNC_RECORD [3/4]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Init )

COVMAP_FUNC_RECORD [4/4]

#define COVMAP_FUNC_RECORD ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [1/4]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Init )

COVMAP_HEADER [2/4]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [3/4]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_HEADER [4/4]

#define COVMAP_HEADER ( Type,
LLVMType,
Name,
Initializer )

COVMAP_V1

COVMAP_V2

COVMAP_V2_OR_V3 [1/2]

COVMAP_V2_OR_V3 [2/2]

COVMAP_V3

INSTR_PROF_COMMA [1/4]

INSTR_PROF_COMMA [2/4]

INSTR_PROF_COMMA [3/4]

INSTR_PROF_COMMA [4/4]

INSTR_PROF_DATA [1/4]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [2/4]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [3/4]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA [4/4]

#define INSTR_PROF_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_DATA_DEFINED [1/4]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [2/4]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [3/4]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_DATA_DEFINED [4/4]

#define INSTR_PROF_DATA_DEFINED

INSTR_PROF_RAW_HEADER [1/4]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [2/4]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [3/4]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_RAW_HEADER [4/4]

#define INSTR_PROF_RAW_HEADER ( Type,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [1/4]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [2/4]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [3/4]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VALUE_NODE [4/4]

#define INSTR_PROF_VALUE_NODE ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VISIBILITY

#define INSTR_PROF_VISIBILITY

INSTR_PROF_VTABLE_DATA [1/4]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [2/4]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [3/4]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

INSTR_PROF_VTABLE_DATA [4/4]

#define INSTR_PROF_VTABLE_DATA ( Type,
LLVMType,
Name,
Initializer )

VALUE_PROF_FUNC_PARAM [1/4]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [2/4]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [3/4]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_FUNC_PARAM [4/4]

#define VALUE_PROF_FUNC_PARAM ( ArgType,
ArgName,
ArgLLVMType )

VALUE_PROF_KIND [1/4]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [2/4]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [3/4]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )

VALUE_PROF_KIND [4/4]

#define VALUE_PROF_KIND ( Enumerator,
Value,
Descr )