Line data Source code
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 0 : 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
|