File indexing completed on 2026-05-10 08:44:40
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_TRANSFORMS_IPO_MODULEINLINER_H
0010 #define LLVM_TRANSFORMS_IPO_MODULEINLINER_H
0011
0012 #include "llvm/Analysis/InlineAdvisor.h"
0013 #include "llvm/Analysis/InlineCost.h"
0014 #include "llvm/IR/PassManager.h"
0015
0016 namespace llvm {
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 class ModuleInlinerPass : public PassInfoMixin<ModuleInlinerPass> {
0028 public:
0029 ModuleInlinerPass(InlineParams Params = getInlineParams(),
0030 InliningAdvisorMode Mode = InliningAdvisorMode::Default,
0031 ThinOrFullLTOPhase LTOPhase = ThinOrFullLTOPhase::None)
0032 : Params(Params), Mode(Mode), LTOPhase(LTOPhase){};
0033 ModuleInlinerPass(ModuleInlinerPass &&Arg) = default;
0034
0035 PreservedAnalyses run(Module &, ModuleAnalysisManager &);
0036
0037 private:
0038 InlineAdvisor &getAdvisor(const ModuleAnalysisManager &MAM,
0039 FunctionAnalysisManager &FAM, Module &M);
0040 std::unique_ptr<InlineAdvisor> OwnedAdvisor;
0041 const InlineParams Params;
0042 const InliningAdvisorMode Mode;
0043 const ThinOrFullLTOPhase LTOPhase;
0044 };
0045 }
0046
0047 #endif