| @@ -203,7 +203,7 @@ class SccFinder { | |||||
| explicit SccFinder(FuncGraphPtr root) : root_(root) {} | explicit SccFinder(FuncGraphPtr root) : root_(root) {} | ||||
| ~SccFinder() = default; | ~SccFinder() = default; | ||||
| void Run() { (void)Search(root_); } | void Run() { (void)Search(root_); } | ||||
| SccMap &scc_map() { return scc_map_; } | |||||
| const SccMap &scc_map() { return scc_map_; } | |||||
| private: | private: | ||||
| // Save state of a func graph. | // Save state of a func graph. | ||||
| @@ -520,7 +520,7 @@ class SideEffectFinder { | |||||
| EffectInfo TraceTupleEffectInfo(const AnfNodePtr &tuple_node, std::stack<int64_t> *tuple_indexes) { | EffectInfo TraceTupleEffectInfo(const AnfNodePtr &tuple_node, std::stack<int64_t> *tuple_indexes) { | ||||
| auto para = dyn_cast<Parameter>(tuple_node); | auto para = dyn_cast<Parameter>(tuple_node); | ||||
| if (para != nullptr) { | if (para != nullptr) { | ||||
| return TraceTupleParaEffectInfo(para, tuple_indexes); | |||||
| return TraceTupleParaEffectInfo(para, *tuple_indexes); | |||||
| } | } | ||||
| auto tuple_cnode = dyn_cast<CNode>(tuple_node); | auto tuple_cnode = dyn_cast<CNode>(tuple_node); | ||||
| if (tuple_cnode != nullptr) { | if (tuple_cnode != nullptr) { | ||||
| @@ -530,11 +530,11 @@ class SideEffectFinder { | |||||
| MS_LOG(EXCEPTION) << "Side effects untraceable: " << tuple_node->DebugString(); | MS_LOG(EXCEPTION) << "Side effects untraceable: " << tuple_node->DebugString(); | ||||
| } | } | ||||
| EffectInfo TraceTupleParaEffectInfo(const ParameterPtr ¶, std::stack<int64_t> *tuple_indexes) { | |||||
| EffectInfo TraceTupleParaEffectInfo(const ParameterPtr ¶, const std::stack<int64_t> &tuple_indexes) { | |||||
| EffectInfo info{EffectInfo::kDetected, false, false, false}; | EffectInfo info{EffectInfo::kDetected, false, false, false}; | ||||
| ForEachRealArguments(para, [this, &info, tuple_indexes](const AnfNodePtr &arg) { | ForEachRealArguments(para, [this, &info, tuple_indexes](const AnfNodePtr &arg) { | ||||
| // Merge real argument effect info. | // Merge real argument effect info. | ||||
| auto tuple_indexes_copy = *tuple_indexes; | |||||
| auto tuple_indexes_copy = tuple_indexes; | |||||
| auto arg_info = TraceTupleEffectInfo(arg, &tuple_indexes_copy); | auto arg_info = TraceTupleEffectInfo(arg, &tuple_indexes_copy); | ||||
| info.Merge(arg_info); | info.Merge(arg_info); | ||||
| }); | }); | ||||