6 #ifndef JLM_LLVM_OPT_PUSH_HPP
7 #define JLM_LLVM_OPT_PUSH_HPP
48 Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override;
66 static std::vector<rvsdg::Output *>
69 static rvsdg::Output &
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
rvsdg::Region & computeTargetRegion(const rvsdg::Node &node) const
static std::vector< rvsdg::Output * > getOperandsFromTargetRegion(rvsdg::Node &node, rvsdg::Region &targetRegion)
std::unique_ptr< Context > context_
static bool isInvariantMemoryStateLoopVar(const rvsdg::ThetaNode::LoopVar &loopVar)
void copyNodeToTargetRegion(rvsdg::Node &node) const
void markNodes(const rvsdg::Region ®ion)
static rvsdg::Output & getOperandFromTargetRegion(rvsdg::Output &output, rvsdg::Region &targetRegion)
size_t computeRegionDepth(const rvsdg::Region ®ion) const
Global memory state passed between functions.