| 217 | : m_var2nr_val_dep{graph.get_var2nr_val_dep_oprs()} {} |
| 218 | |
| 219 | void UniqReaderCheck::update_on_opr_auto_replace( |
| 220 | OperatorNodeBase* opr, OperatorNodeBase* repl_opr) { |
| 221 | auto non_volatile_size = [](const VarNodeArray& vars) -> size_t { |
| 222 | size_t size = 0; |
| 223 | for (size_t i = 0; i < vars.size(); ++i) { |
| 224 | if (!vars[i]->contain_flag(VarNode::Flag::VOLATILE_CONTENT)) { |
| 225 | size++; |
| 226 | } |
| 227 | } |
| 228 | return size; |
| 229 | }; |
| 230 | if (opr != repl_opr) { |
| 231 | auto &&o0 = opr->output(), &&o1 = repl_opr->output(); |
| 232 | mgb_assert(non_volatile_size(o0) == non_volatile_size(o1)); |
| 233 | for (size_t i = 0; i < o0.size(); ++i) { |
| 234 | auto iter = m_var2nr_val_dep.find(o0[i]); |
| 235 | if (iter != m_var2nr_val_dep.end()) { |
| 236 | auto n = iter->second; |
| 237 | m_var2nr_val_dep[o1[i]] = n; |
| 238 | } |
| 239 | } |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | /* ================ OptState ================ */ |
| 244 |
no test coverage detected