Home | History | Annotate | Line # | Download | only in Support
      1 //== llvm/Support/CodeGenCoverage.h ------------------------------*- C++ -*-==//
      2 //
      3 // 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
      6 //
      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 
     16 namespace llvm {
     17 class LLVMContext;
     18 class MemoryBuffer;
     19 
     20 class CodeGenCoverage {
     21 protected:
     22   BitVector RuleCoverage;
     23 
     24 public:
     25   using const_covered_iterator = BitVector::const_set_bits_iterator;
     26 
     27   CodeGenCoverage();
     28 
     29   void setCovered(uint64_t RuleID);
     30   bool isCovered(uint64_t RuleID) const;
     31   iterator_range<const_covered_iterator> covered() const;
     32 
     33   bool parse(MemoryBuffer &Buffer, StringRef BackendName);
     34   bool emit(StringRef FilePrefix, StringRef BackendName) const;
     35   void reset();
     36 };
     37 } // namespace llvm
     38 
     39 #endif // LLVM_SUPPORT_CODEGENCOVERAGE_H
     40