|
Jlm
|
Node Hoisting Transformation. More...
#include <push.hpp>


Classes | |
| class | Context |
| class | Statistics |
Public Member Functions | |
| ~NodeHoisting () noexcept override | |
| NodeHoisting () | |
| void | Run (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override |
| Perform RVSDG transformation. More... | |
Public Member Functions inherited from jlm::rvsdg::Transformation | |
| virtual | ~Transformation () noexcept |
| Transformation (std::string_view Name) | |
| const std::string_view & | GetName () const noexcept |
| void | Run (RvsdgModule &module) |
| Perform RVSDG transformation. More... | |
Private Member Functions | |
| void | hoistNodesInRootRegion (rvsdg::Region ®ion) |
| void | hoistNodesInLambda (rvsdg::LambdaNode &lambdaNode) |
| void | markNodes (const rvsdg::Region ®ion) |
| void | hoistNodes (rvsdg::Region ®ion) |
| void | copyNodeToTargetRegion (rvsdg::Node &node) const |
| size_t | computeRegionDepth (const rvsdg::Region ®ion) const |
| rvsdg::Region & | computeTargetRegion (const rvsdg::Node &node) const |
| rvsdg::Region & | computeTargetRegion (const rvsdg::Output &output) const |
Static Private Member Functions | |
| static std::vector< rvsdg::Output * > | getOperandsFromTargetRegion (rvsdg::Node &node, rvsdg::Region &targetRegion) |
| static rvsdg::Output & | getOperandFromTargetRegion (rvsdg::Output &output, rvsdg::Region &targetRegion) |
| static bool | isInvariantMemoryStateLoopVar (const rvsdg::ThetaNode::LoopVar &loopVar) |
Private Attributes | |
| std::unique_ptr< Context > | context_ {} |
Node Hoisting Transformation.
This transformation hoists nodes out of gamma and theta nodes as far up the region tree as possible. It accomplishes this in two phases:
These two phases are performed on every function in the module.
|
overridedefaultnoexcept |
|
private |
|
private |
|
private |
|
private |
|
staticprivate |
|
staticprivate |
|
private |
|
private |
|
private |
|
staticprivate |
|
private |
|
overridevirtual |
Perform RVSDG transformation.
| module | RVSDG module the transformation is performed on. |
| statisticsCollector | Statistics collector for collecting transformation statistics. |
Implements jlm::rvsdg::Transformation.
|
private |