|
Jlm
|
Dead Node Elimination Optimization. More...
#include <DeadNodeElimination.hpp>


Classes | |
| class | Context |
| Dead Node Elimination context class. More... | |
| class | Statistics |
| Dead Node Elimination statistics class. More... | |
Public Member Functions | |
| ~DeadNodeElimination () noexcept override | |
| DeadNodeElimination () | |
| DeadNodeElimination (const DeadNodeElimination &)=delete | |
| DeadNodeElimination (DeadNodeElimination &&)=delete | |
| DeadNodeElimination & | operator= (const DeadNodeElimination &)=delete |
| DeadNodeElimination & | operator= (DeadNodeElimination &&)=delete |
| void | run (rvsdg::Region ®ion) |
| 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... | |
Private Member Functions | |
| void | markRegion (const rvsdg::Region ®ion) |
| void | markOutput (const rvsdg::Output &output) |
| void | sweepRvsdg (rvsdg::Graph &rvsdg) const |
| void | sweepRegion (rvsdg::Region ®ion) const |
| void | sweepStructuralNode (rvsdg::StructuralNode &node) const |
| void | sweepGamma (rvsdg::GammaNode &gammaNode) const |
| void | sweepTheta (rvsdg::ThetaNode &thetaNode) const |
| void | sweepLambda (rvsdg::LambdaNode &lambdaNode) const |
| void | sweepPhi (rvsdg::PhiNode &phiNode) const |
Static Private Member Functions | |
| static void | sweepDelta (rvsdg::DeltaNode &deltaNode) |
| static void | removeNode (rvsdg::Node &node) |
Private Attributes | |
| std::unique_ptr< Context > | Context_ {} |
Dead Node Elimination Optimization.
Dead Node Elimination removes all nodes that do not contribute to the result of a computation. A node is considered dead if all its outputs are dead, and an output is considered dead if it has no users or all its users are already dead. An input (and therefore an outputs' user) is considered dead if the corresponding node is dead. We call all nodes, inputs, and outputs that are not dead alive.
The Dead Node Elimination optimization consists of two phases: mark and sweep. The mark phase traverses the RVSDG and marks all nodes, inputs, and outputs that it finds as alive, while the sweep phase removes then all nodes, inputs, and outputs that were not discovered by the mark phase, i.e., all dead nodes, inputs, and outputs.
Please see TestDeadNodeElimination.cpp for Dead Node Elimination examples.
Definition at line 43 of file DeadNodeElimination.hpp.
|
overridedefaultnoexcept |
| jlm::llvm::DeadNodeElimination::DeadNodeElimination | ( | ) |
Definition at line 137 of file DeadNodeElimination.cpp.
|
delete |
|
delete |
|
private |
Definition at line 194 of file DeadNodeElimination.cpp.
|
private |
Definition at line 185 of file DeadNodeElimination.cpp.
|
delete |
|
delete |
|
staticprivate |
Definition at line 531 of file DeadNodeElimination.cpp.
| void jlm::llvm::DeadNodeElimination::run | ( | rvsdg::Region & | region | ) |
Definition at line 142 of file DeadNodeElimination.cpp.
|
overridevirtual |
Perform RVSDG transformation.
| module | RVSDG module the transformation is performed on. |
| statisticsCollector | Statistics collector for collecting transformation statistics. |
Implements jlm::rvsdg::Transformation.
Definition at line 154 of file DeadNodeElimination.cpp.
|
staticprivate |
Definition at line 522 of file DeadNodeElimination.cpp.
|
private |
Definition at line 421 of file DeadNodeElimination.cpp.
|
private |
Definition at line 484 of file DeadNodeElimination.cpp.
|
private |
Definition at line 491 of file DeadNodeElimination.cpp.
|
private |
Definition at line 354 of file DeadNodeElimination.cpp.
|
private |
Definition at line 336 of file DeadNodeElimination.cpp.
|
private |
Definition at line 390 of file DeadNodeElimination.cpp.
|
private |
Definition at line 457 of file DeadNodeElimination.cpp.
|
private |
Definition at line 103 of file DeadNodeElimination.hpp.