14 #ifndef LLVM_CLANG_LIB_CODEGEN_COVERAGEMAPPINGGEN_H 15 #define LLVM_CLANG_LIB_CODEGEN_COVERAGEMAPPINGGEN_H 21 #include "llvm/ADT/DenseMap.h" 22 #include "llvm/IR/GlobalValue.h" 23 #include "llvm/Support/raw_ostream.h" 38 std::vector<SourceRange> SkippedRanges;
54 llvm::SmallDenseMap<const FileEntry *, unsigned, 8> FileEntries;
55 std::vector<llvm::Constant *> FunctionRecords;
56 std::vector<llvm::Constant *> FunctionNames;
57 llvm::StructType *FunctionRecordTy;
58 std::vector<std::string> CoverageMappings;
62 : CGM(CGM), SourceInfo(SourceInfo), FunctionRecordTy(nullptr) {}
70 void addFunctionMappingRecord(llvm::GlobalVariable *FunctionName,
71 StringRef FunctionNameValue,
72 uint64_t FunctionHash,
73 const std::string &CoverageMapping,
81 unsigned getFileID(
const FileEntry *File);
90 llvm::DenseMap<const Stmt *, unsigned> *CounterMap;
95 : CVM(CVM), SM(SM), LangOpts(LangOpts), CounterMap(nullptr) {}
99 llvm::DenseMap<const Stmt *, unsigned> *CounterMap)
100 : CVM(CVM), SM(SM), LangOpts(LangOpts), CounterMap(CounterMap) {}
105 void emitCounterMapping(
const Decl *D, llvm::raw_ostream &OS);
109 void emitEmptyMapping(
const Decl *D, llvm::raw_ostream &OS);
Organizes the per-function state that is used while generating code coverage mapping data...
Decl - This represents one declaration (or definition), e.g.
CoverageMappingGen(CoverageMappingModuleGen &CVM, SourceManager &SM, const LangOptions &LangOpts, llvm::DenseMap< const Stmt *, unsigned > *CounterMap)
Stores additional source code information like skipped ranges which is required by the coverage mappi...
The l-value was an access to a declared entity or something equivalently strong, like the address of ...
This interface provides a way to observe the actions of the preprocessor as it does its thing...
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified...
Organizes the cross-function state that is used while generating code coverage mapping data...
void SourceRangeSkipped(SourceRange Range, SourceLocation EndifLoc) override
Hook called when a source range is skipped.
CoverageMappingModuleGen(CodeGenModule &CGM, CoverageSourceInfo &SourceInfo)
Encodes a location in the source.
ArrayRef< SourceRange > getSkippedRanges() const
Cached information about one file (either on disk or in the virtual file system). ...
CoverageSourceInfo & getSourceInfo() const
This class organizes the cross-function state that is used while generating LLVM code.
Dataflow Directional Tag Classes.
CoverageMappingGen(CoverageMappingModuleGen &CVM, SourceManager &SM, const LangOptions &LangOpts)
Defines the PPCallbacks interface.
Defines the clang::SourceLocation class and associated facilities.
A trivial tuple used to represent a source range.
This class handles loading and caching of source files into memory.