Jlm
Classes | Public Member Functions | Static Public Member Functions | Static Private Member Functions | List of all members
jlm::llvm::NodeSinking Class Referencefinal

Node Sinking Optimization. More...

#include <pull.hpp>

Inheritance diagram for jlm::llvm::NodeSinking:
Inheritance graph
[legend]
Collaboration diagram for jlm::llvm::NodeSinking:
Collaboration graph
[legend]

Classes

class  Statistics
 

Public Member Functions

 ~NodeSinking () noexcept override
 
 NodeSinking ()
 
void Run (rvsdg::RvsdgModule &module, 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...
 

Static Public Member Functions

static size_t sinkDependentNodesIntoGamma (rvsdg::GammaNode &gammaNode)
 

Static Private Member Functions

static util::HashSet< rvsdg::Node * > collectDependentNodes (const rvsdg::Node &node)
 
static std::vector< rvsdg::Node * > sortByDepth (const util::HashSet< rvsdg::Node * > &nodes)
 

Detailed Description

Node Sinking Optimization.

Definition at line 23 of file pull.hpp.

Constructor & Destructor Documentation

◆ ~NodeSinking()

jlm::llvm::NodeSinking::~NodeSinking ( )
overridedefaultnoexcept

◆ NodeSinking()

jlm::llvm::NodeSinking::NodeSinking ( )
inline

Definition at line 30 of file pull.hpp.

Member Function Documentation

◆ collectDependentNodes()

util::HashSet< rvsdg::Node * > jlm::llvm::NodeSinking::collectDependentNodes ( const rvsdg::Node node)
staticprivate

Collects all nodes that (in-)directly dependent on node.

Parameters
nodeA node for which to compute the dependent nodes.
Returns
A set of all the dependent nodes.

Definition at line 161 of file pull.cpp.

◆ Run()

void jlm::llvm::NodeSinking::Run ( rvsdg::RvsdgModule module,
util::StatisticsCollector statisticsCollector 
)
overridevirtual

Perform RVSDG transformation.

Note
This method is expected to be called multiple times. An implementation is required to reset the objects' internal state to ensure correct behavior after every invocation.
Parameters
moduleRVSDG module the transformation is performed on.
statisticsCollectorStatistics collector for collecting transformation statistics.

Implements jlm::rvsdg::Transformation.

Definition at line 398 of file pull.cpp.

◆ sinkDependentNodesIntoGamma()

size_t jlm::llvm::NodeSinking::sinkDependentNodesIntoGamma ( rvsdg::GammaNode gammaNode)
static

Sink all nodes that are dependent on gammaNode and are from the same region as gammaNode into the gamma node's subregions.

Parameters
gammaNodeA rvsdg::GammaNode
Returns
The number of dependent nodes that were sunk into the gamma node.

Definition at line 215 of file pull.cpp.

◆ sortByDepth()

std::vector< rvsdg::Node * > jlm::llvm::NodeSinking::sortByDepth ( const util::HashSet< rvsdg::Node * > &  nodes)
staticprivate

Sort nodes by their depth.

Parameters
nodesA set of nodes.
Returns
A sorted vector of nodes.
Precondition
All nodes in must be from the same region.

Definition at line 187 of file pull.cpp.


The documentation for this class was generated from the following files: