| 1399 | } |
| 1400 | |
| 1401 | void FunctionalizeCond::SortMergeNodes(std::vector<Node*>* merge_order) { |
| 1402 | // Sort merge nodes by nesting depth. |
| 1403 | using sort_pair = std::pair<int, Node*>; |
| 1404 | std::vector<sort_pair> inner_to_outer_merge_order; |
| 1405 | inner_to_outer_merge_order.reserve(merge_order->size()); |
| 1406 | for (auto it = merge_order->rbegin(); it != merge_order->rend(); ++it) { |
| 1407 | Node* merge = *it; |
| 1408 | StateMap::CondId id = state_map_.LookupCondId(merge); |
| 1409 | int depth = id != nullptr ? id->size() : 0; |
| 1410 | inner_to_outer_merge_order.emplace_back(depth, merge); |
| 1411 | } |
| 1412 | std::stable_sort( |
| 1413 | inner_to_outer_merge_order.begin(), inner_to_outer_merge_order.end(), |
| 1414 | [](sort_pair lhs, sort_pair rhs) { return lhs.first > rhs.first; }); |
| 1415 | merge_order->clear(); |
| 1416 | for (sort_pair t : inner_to_outer_merge_order) { |
| 1417 | merge_order->push_back(t.second); |
| 1418 | } |
| 1419 | } |
| 1420 | |
| 1421 | Status FunctionalizeCond::FunctionalizeInternal() { |
| 1422 | // The general approach for converting a tf.cond (as lowered via switch/merge |
nothing calls this directly
no test coverage detected