CodeGenCoverage.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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. #ifndef LLVM_SUPPORT_CODEGENCOVERAGE_H
  11. #define LLVM_SUPPORT_CODEGENCOVERAGE_H
  12. #include "llvm/ADT/BitVector.h"
  13. namespace llvm {
  14. class LLVMContext;
  15. class MemoryBuffer;
  16. class CodeGenCoverage {
  17. protected:
  18. BitVector RuleCoverage;
  19. public:
  20. using const_covered_iterator = BitVector::const_set_bits_iterator;
  21. CodeGenCoverage();
  22. void setCovered(uint64_t RuleID);
  23. bool isCovered(uint64_t RuleID) const;
  24. iterator_range<const_covered_iterator> covered() const;
  25. bool parse(MemoryBuffer &Buffer, StringRef BackendName);
  26. bool emit(StringRef FilePrefix, StringRef BackendName) const;
  27. void reset();
  28. };
  29. } // namespace llvm
  30. #endif // LLVM_SUPPORT_CODEGENCOVERAGE_H