|
|
@ -265,6 +265,7 @@ class AreaGraph {
|
|
|
|
CNodePtr CreateMainCNode(const FuncGraphPtr &main_func_graph, const FuncGraphPtr &sub_func_graph,
|
|
|
|
CNodePtr CreateMainCNode(const FuncGraphPtr &main_func_graph, const FuncGraphPtr &sub_func_graph,
|
|
|
|
const std::vector<CNodePtr> &main_cnodes,
|
|
|
|
const std::vector<CNodePtr> &main_cnodes,
|
|
|
|
const std::unordered_map<ParameterPtr, AnfNodePtr> ¶m_node_map) {
|
|
|
|
const std::unordered_map<ParameterPtr, AnfNodePtr> ¶m_node_map) {
|
|
|
|
|
|
|
|
TraceGuard guard(std::make_shared<TraceOpt>(sub_func_graph->debug_info()));
|
|
|
|
AnfNodePtrList main_cnode_inputs = {NewValueNode(sub_func_graph)};
|
|
|
|
AnfNodePtrList main_cnode_inputs = {NewValueNode(sub_func_graph)};
|
|
|
|
for (const auto ¶m : sub_func_graph->parameters()) {
|
|
|
|
for (const auto ¶m : sub_func_graph->parameters()) {
|
|
|
|
// assert the param exists.
|
|
|
|
// assert the param exists.
|
|
|
@ -276,6 +277,7 @@ class AreaGraph {
|
|
|
|
auto idx = NewValueNode(idx_val);
|
|
|
|
auto idx = NewValueNode(idx_val);
|
|
|
|
idx->set_abstract(std::make_shared<abstract::AbstractScalar>(idx_val));
|
|
|
|
idx->set_abstract(std::make_shared<abstract::AbstractScalar>(idx_val));
|
|
|
|
AnfNodePtrList getitem_inputs = {NewValueNode(prim::kPrimTupleGetItem), main_cnodes[input_area], idx};
|
|
|
|
AnfNodePtrList getitem_inputs = {NewValueNode(prim::kPrimTupleGetItem), main_cnodes[input_area], idx};
|
|
|
|
|
|
|
|
TraceGuard g_sub(std::make_shared<TraceOpt>(main_cnodes[input_area]->debug_info()));
|
|
|
|
auto getitem_node = main_func_graph->NewCNode(getitem_inputs);
|
|
|
|
auto getitem_node = main_func_graph->NewCNode(getitem_inputs);
|
|
|
|
getitem_node->set_abstract(main_cnodes[input_area]->abstract());
|
|
|
|
getitem_node->set_abstract(main_cnodes[input_area]->abstract());
|
|
|
|
main_cnode_inputs.push_back(getitem_node);
|
|
|
|
main_cnode_inputs.push_back(getitem_node);
|
|
|
|