|
|
@@ -96,6 +96,7 @@ void ProcessThroughPassCNode(std::function<bool(const AnfNodePtr &)> pass_fn, |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ProcessDependCNode(OrderedMap<AnfNodePtr, NodeRelation> *node_rels) { |
|
|
void ProcessDependCNode(OrderedMap<AnfNodePtr, NodeRelation> *node_rels) { |
|
|
|
|
|
OrderedSet<AnfNodePtr> to_be_through_pass; |
|
|
for (auto &[node, node_rel] : (*node_rels)) { |
|
|
for (auto &[node, node_rel] : (*node_rels)) { |
|
|
if (!IsPrimitiveCNode(node, prim::kPrimDepend) || |
|
|
if (!IsPrimitiveCNode(node, prim::kPrimDepend) || |
|
|
HasAbstractMonad(node->cast<CNodePtr>()->input(kDependAttachNodeIndex))) { |
|
|
HasAbstractMonad(node->cast<CNodePtr>()->input(kDependAttachNodeIndex))) { |
|
|
@@ -113,10 +114,12 @@ void ProcessDependCNode(OrderedMap<AnfNodePtr, NodeRelation> *node_rels) { |
|
|
cnode_pres.erase(attach_node); |
|
|
cnode_pres.erase(attach_node); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
to_be_through_pass.insert(node); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// Eliminate depend node of node relations. |
|
|
// Eliminate depend node of node relations. |
|
|
ProcessThroughPassCNode([](const AnfNodePtr &node) { return IsOneOf(node, {prim::kPrimDepend}); }, node_rels); |
|
|
|
|
|
|
|
|
ProcessThroughPassCNode([&to_be_through_pass](const AnfNodePtr &node) { return to_be_through_pass.count(node) > 0; }, |
|
|
|
|
|
node_rels); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void ProcessTailMakeTupleCNode(OrderedMap<AnfNodePtr, NodeRelation> *node_rels) { |
|
|
void ProcessTailMakeTupleCNode(OrderedMap<AnfNodePtr, NodeRelation> *node_rels) { |
|
|
|