|
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 jlm::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) |
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 144 of file DeadNodeElimination.cpp.
|
delete |
|
delete |
|
private |
Definition at line 193 of file DeadNodeElimination.cpp.
|
private |
Definition at line 184 of file DeadNodeElimination.cpp.
|
delete |
|
delete |
| void jlm::llvm::DeadNodeElimination::run | ( | rvsdg::Region & | region | ) |
Definition at line 149 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 161 of file DeadNodeElimination.cpp.
|
staticprivate |
Definition at line 494 of file DeadNodeElimination.cpp.
|
private |
Definition at line 389 of file DeadNodeElimination.cpp.
|
private |
Definition at line 455 of file DeadNodeElimination.cpp.
|
private |
Definition at line 462 of file DeadNodeElimination.cpp.
|
private |
Definition at line 342 of file DeadNodeElimination.cpp.
|
private |
Definition at line 324 of file DeadNodeElimination.cpp.
|
private |
Definition at line 362 of file DeadNodeElimination.cpp.
|
private |
Definition at line 428 of file DeadNodeElimination.cpp.
|
private |
Definition at line 100 of file DeadNodeElimination.hpp.