blob: 0b1af779ffb0695c88835302245257fb60c68edf [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//== llvm/Support/CodeGenCoverage.h ------------------------------*- C++ -*-==//
2//
Andrew Walbran16937d02019-10-22 13:54:20 +01003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01006//
7//===----------------------------------------------------------------------===//
8/// \file This file provides rule coverage tracking for tablegen-erated CodeGen.
9//===----------------------------------------------------------------------===//
10
11#ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H
12#define LLVM_SUPPORT_CODEGENCOVERAGE_H
13
14#include "llvm/ADT/BitVector.h"
15
16namespace llvm {
17class LLVMContext;
18class MemoryBuffer;
19
20class CodeGenCoverage {
21protected:
22 BitVector RuleCoverage;
23
24public:
Andrew Scullcdfcccc2018-10-05 20:58:37 +010025 using const_covered_iterator = BitVector::const_set_bits_iterator;
26
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010027 CodeGenCoverage();
28
29 void setCovered(uint64_t RuleID);
Andrew Scullcdfcccc2018-10-05 20:58:37 +010030 bool isCovered(uint64_t RuleID) const;
31 iterator_range<const_covered_iterator> covered() const;
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010032
33 bool parse(MemoryBuffer &Buffer, StringRef BackendName);
34 bool emit(StringRef FilePrefix, StringRef BackendName) const;
35 void reset();
36};
Andrew Scullcdfcccc2018-10-05 20:58:37 +010037} // namespace llvm
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010038
39#endif // ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H