| @@ -748,6 +748,10 @@ bool KernelGraph::RemoveValueNodeFromGraph(const ValueNodePtr &value_node) { | |||||
| void KernelGraph::ReplaceNode(NotNull<AnfNodePtr> old_anf_node, NotNull<AnfNodePtr> new_anf_node) { | void KernelGraph::ReplaceNode(NotNull<AnfNodePtr> old_anf_node, NotNull<AnfNodePtr> new_anf_node) { | ||||
| MS_EXCEPTION_IF_NULL(inputs_); | MS_EXCEPTION_IF_NULL(inputs_); | ||||
| { | |||||
| std::queue<AnfNodePtr> seed_nodes; | |||||
| UpdateNodeEdgeList(&seed_nodes); | |||||
| } | |||||
| auto it = node_output_edges_.find(old_anf_node); | auto it = node_output_edges_.find(old_anf_node); | ||||
| if (it != node_output_edges_.end()) { | if (it != node_output_edges_.end()) { | ||||
| const auto &outputs = it->second; | const auto &outputs = it->second; | ||||
| @@ -778,8 +782,10 @@ void KernelGraph::ReplaceNode(NotNull<AnfNodePtr> old_anf_node, NotNull<AnfNodeP | |||||
| // update front to backend map | // update front to backend map | ||||
| FrontBackendlMapUpdate(old_anf_node, new_anf_node); | FrontBackendlMapUpdate(old_anf_node, new_anf_node); | ||||
| } | } | ||||
| // if change the ir of graph, regenerate execution order of graph | |||||
| SetExecOrderByDefault(); | |||||
| { | |||||
| std::queue<AnfNodePtr> seed_nodes; | |||||
| UpdateNodeEdgeList(&seed_nodes); | |||||
| } | |||||
| // update graph inputs in child graph | // update graph inputs in child graph | ||||
| auto it_real_inputs = std::find_if(real_inputs_.begin(), real_inputs_.end(), | auto it_real_inputs = std::find_if(real_inputs_.begin(), real_inputs_.end(), | ||||
| [&old_anf_node](const std::pair<AnfNodePtr, std::vector<AnfNodePtr>> &n) -> bool { | [&old_anf_node](const std::pair<AnfNodePtr, std::vector<AnfNodePtr>> &n) -> bool { | ||||