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
41