6 #ifndef JLM_LLVM_OPT_INLINE_HPP
7 #define JLM_LLVM_OPT_INLINE_HPP
48 rvsdg::SimpleNode & callNode,
49 rvsdg::LambdaNode & caller,
50 const rvsdg::LambdaNode & callee);
60 canBeInlined(rvsdg::Region & region,
bool topLevelRegion);
71 rvsdg::SimpleNode & callNode,
72 rvsdg::LambdaNode & caller,
73 rvsdg::LambdaNode & callee);
116 inlineCall(rvsdg::SimpleNode & callNode, const rvsdg::LambdaNode & callee);
126 Run(rvsdg::RvsdgModule & module, util::StatisticsCollector & statisticsCollector) override;
Performs function inlining on functions that are determined to be good candidates,...
bool shouldInline(rvsdg::SimpleNode &callNode, rvsdg::LambdaNode &caller, rvsdg::LambdaNode &callee)
void visitInterProceduralRegion(rvsdg::Region ®ion)
void visitLambda(rvsdg::LambdaNode &lambda)
void considerCallForInlining(rvsdg::SimpleNode &callNode, rvsdg::LambdaNode &callerLambda)
void Run(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static bool canBeInlined(rvsdg::Region ®ion, bool topLevelRegion)
void visitIntraProceduralRegion(rvsdg::Region ®ion, rvsdg::LambdaNode &lambda)
static void inlineCall(rvsdg::SimpleNode &callNode, rvsdg::LambdaNode &caller, const rvsdg::LambdaNode &callee)
~FunctionInlining() noexcept override
std::unique_ptr< Context > context_
Global memory state passed between functions.