return false;
}
+ // Pass a node through all registered optimizer stages, until break predicate
+ // is true or a stage fails.
+ //
+ // Returns any stage failure status, or else Status::OK().
+ Status PassThroughAllStagesWithStatus(NodeDef* node, Result* result) {
+ for (auto& stage : stages_) {
+ if (!stage->IsSupported(node)) {
+ continue;
+ }
+ const Status stage_status = stage->TrySimplify(node, result);
+ if (!stage_status.ok()) {
+ return stage_status;
+ } else if (break_predicate_(*result)) {
+ break;
+ }
+ }
+ return Status::OK();
+ }
+
std::size_t NumStages() { return stages_.size(); }
std::vector<string> StageNames() {