//===- InstrProfCorrelator.h ------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // This file defines InstrProfCorrelator used to generate PGO/coverage profiles // from raw profile data and debug info/binary file. //===----------------------------------------------------------------------===// #ifndef LLVM_PROFILEDATA_INSTRPROFCORRELATOR_H #define LLVM_PROFILEDATA_INSTRPROFCORRELATOR_H #include "llvm/ADT/DenseSet.h" #include "llvm/ProfileData/InstrProf.h" #include "llvm/Support/Error.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/YAMLTraits.h" #include <optional> #include <vector> namespace llvm { class DWARFContext; class DWARFDie; namespace object { class ObjectFile; } /// InstrProfCorrelator - A base class used to create raw instrumentation data /// to their functions. class InstrProfCorrelator { … }; /// InstrProfCorrelatorImpl - A child of InstrProfCorrelator with a template /// pointer type so that the ProfileData vector can be materialized. template <class IntPtrT> class InstrProfCorrelatorImpl : public InstrProfCorrelator { … }; /// DwarfInstrProfCorrelator - A child of InstrProfCorrelatorImpl that takes /// DWARF debug info as input to correlate profiles. template <class IntPtrT> class DwarfInstrProfCorrelator : public InstrProfCorrelatorImpl<IntPtrT> { … }; /// BinaryInstrProfCorrelator - A child of InstrProfCorrelatorImpl that /// takes an object file as input to correlate profiles. template <class IntPtrT> class BinaryInstrProfCorrelator : public InstrProfCorrelatorImpl<IntPtrT> { … }; } // end namespace llvm #endif // LLVM_PROFILEDATA_INSTRPROFCORRELATOR_H