]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/Support/CodeGenCoverage.h
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / Support / CodeGenCoverage.h
1 //== llvm/Support/CodeGenCoverage.h ------------------------------*- C++ -*-==//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 /// \file This file provides rule coverage tracking for tablegen-erated CodeGen.
10 //===----------------------------------------------------------------------===//
11
12 #ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H
13 #define LLVM_SUPPORT_CODEGENCOVERAGE_H
14
15 #include "llvm/ADT/BitVector.h"
16
17 namespace llvm {
18 class LLVMContext;
19 class MemoryBuffer;
20
21 class CodeGenCoverage {
22 protected:
23   BitVector RuleCoverage;
24
25 public:
26   using const_covered_iterator = BitVector::const_set_bits_iterator;
27
28   CodeGenCoverage();
29
30   void setCovered(uint64_t RuleID);
31   bool isCovered(uint64_t RuleID) const;
32   iterator_range<const_covered_iterator> covered() const;
33
34   bool parse(MemoryBuffer &Buffer, StringRef BackendName);
35   bool emit(StringRef FilePrefix, StringRef BackendName) const;
36   void reset();
37 };
38 } // namespace llvm
39
40 #endif // ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H