| #include "caffe2/core/logging.h" |
| #include "caffe2/opt/converter.h" |
| #include "caffe2/opt/passes.h" |
| using namespace nom::repr; |
| void deadCodeElim(NNModule* nn) { |
| // Iteratively remove unconsumed non-external outputs. |
| for (const auto& node : nn->dataFlow.getMutableNodes()) { |
| NOM_REQUIRE_OR_CONT(nn::is<repr::NeuralNetOperator>(node)); |
| for (const auto& output : nn::getOutputs(node)) { |
| if (nn::hasConsumer(output) || nn->outputs.count(output)) { |
| NOM_REQUIRE_OR_CONT(!isUsed); |
| // No outputs are used, delete them and the node itself. |
| for (const auto& output : nn::getOutputs(node)) { |
| nn->dataFlow.deleteNode(output); |
| nn->dataFlow.deleteNode(node); |
| REGISTER_OPT_PASS_FROM_FUNC(DeadCodeElim, deadCodeElim); |