//===---- CoverageMappingGen.h - Coverage mapping generation ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Instrumentation-based code coverage mapping generator // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_LIB_CODEGEN_COVERAGEMAPPINGGEN_H #define LLVM_CLANG_LIB_CODEGEN_COVERAGEMAPPINGGEN_H #include "clang/Basic/LLVM.h" #include "clang/Basic/SourceLocation.h" #include "clang/Lex/PPCallbacks.h" #include "clang/Lex/Preprocessor.h" #include "llvm/ADT/DenseMap.h" #include "llvm/IR/GlobalValue.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/raw_ostream.h" namespace llvm::coverage { extern cl::opt<bool> SystemHeadersCoverage; } namespace clang { class LangOptions; class SourceManager; class FileEntry; class Preprocessor; class Decl; class Stmt; struct SkippedRange { … }; /// Stores additional source code information like skipped ranges which /// is required by the coverage mapping generator and is obtained from /// the preprocessor. class CoverageSourceInfo : public PPCallbacks, public CommentHandler, public EmptylineHandler { … }; namespace CodeGen { class CodeGenModule; namespace MCDC { struct State; } /// Organizes the cross-function state that is used while generating /// code coverage mapping data. class CoverageMappingModuleGen { … }; /// Organizes the per-function state that is used while generating /// code coverage mapping data. class CoverageMappingGen { … }; } // end namespace CodeGen } // end namespace clang #endif