6#ifndef JLM_LLVM_OPT_NODEHOISTING_HPP
7#define JLM_LLVM_OPT_NODEHOISTING_HPP
66 static std::vector<rvsdg::Input *>
Node Hoisting Transformation.
void hoistNodesInRootRegion(rvsdg::Region ®ion)
void hoistNodes(rvsdg::Region ®ion)
void hoistNodesInLambda(rvsdg::LambdaNode &lambdaNode)
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
~NodeHoisting() noexcept override
static std::vector< rvsdg::Input * > getUsersFromTargetRegion(rvsdg::Node &node, rvsdg::Region &targetRegion)
rvsdg::Region & computeTargetRegion(const rvsdg::Node &node) const
std::unique_ptr< Context > context_
static bool isInvariantMemoryStateLoopVar(const rvsdg::ThetaNode::LoopVar &loopVar)
void copyNodeToTargetRegion(rvsdg::Node &node) const
void printHoistChain(const rvsdg::Region ®ion) const
void markNodes(const rvsdg::Region ®ion)
static rvsdg::Input & getUserFromTargetRegion(rvsdg::Input &input, rvsdg::Region &targetRegion)
Global memory state passed between functions.
static util::StatisticsCollector statisticsCollector