Filter FV out from isolated nodes list.

pull/13188/head
Zhang Qinghua 4 years ago
parent cb90c963a8
commit 46485439c1

@ -396,8 +396,6 @@ void FunctionBlock::FindIsolatedNodes() {
}
auto &var_name = var.first;
if (used.find(node) == used.end() && CanBeIsolatedNode(var_name, node)) {
// We don't call AddIsolatedNode(node) anymore.
// If need, to call FindIsolatedNodes() in appropriate place.
MS_LOG(INFO) << "Isolated node found(NoUse), node: " << node->DebugString(2) << ", var_name: " << var_name
<< ", block: " << this << "/" << (func_graph() ? func_graph()->ToString() : "FG(Null)")
<< ", Line: " << trace::GetDebugInfo(node->debug_info(), "", kSourceLineTipDiscard);
@ -417,13 +415,21 @@ void FunctionBlock::AttachIsolatedNodesBeforeReturn() {
states.emplace_back(NewValueNode(prim::kPrimMakeTuple));
for (auto &node : isolated_nodes_) {
MS_LOG(DEBUG) << "Adding dependency, node: " << node->DebugString(2) << " in " << func_graph()->ToString();
if (node->func_graph() == func_graph()) {
states.emplace_back(node);
} else {
MS_LOG(INFO) << "Ignored FV dependency, node: " << node->DebugString(2) << " in " << func_graph()->ToString();
}
}
isolated_nodes_.clear();
AnfNodePtr state = nullptr;
// If there are only make_tuple and another node in states(the states size is 2),
// do not need to make_tuple, just use the node.
if (states.size() == 2) {
if (states.size() == 1) {
// Only MakeTuple, no state left.
return;
} else if (states.size() == 2) {
// If there are only MakeTuple and another node in states(the states size is 2),
// do not need to MakeTuple, just use the node.
state = states[1];
} else {
state = func_graph()->NewCNode(states);

Loading…
Cancel
Save