//===- HotColdSplitting.h ---- Outline Cold Regions -------------*- 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 pass outlines cold regions to a separate function. // //===----------------------------------------------------------------------===// #ifndef LLVM_TRANSFORMS_IPO_HOTCOLDSPLITTING_H #define LLVM_TRANSFORMS_IPO_HOTCOLDSPLITTING_H #include "llvm/IR/PassManager.h" #include "llvm/Support/BranchProbability.h" namespace llvm { class Module; class ProfileSummaryInfo; class BasicBlock; class BlockFrequencyInfo; class TargetTransformInfo; class OptimizationRemarkEmitter; class AssumptionCache; class DominatorTree; class CodeExtractor; class CodeExtractorAnalysisCache; /// A sequence of basic blocks. /// /// A 0-sized SmallVector is slightly cheaper to move than a std::vector. BlockSequence; class HotColdSplitting { … }; /// Pass to outline cold regions. class HotColdSplittingPass : public PassInfoMixin<HotColdSplittingPass> { … }; } // end namespace llvm #endif // LLVM_TRANSFORMS_IPO_HOTCOLDSPLITTING_H