| 463 | } |
| 464 | |
| 465 | void SeqModifierForSublinearMemory::ModifyActionPlanner::refine_block_discard_rec( |
| 466 | const OprArray& all_oprs, size_t block_num, VarSet& discard_vars) { |
| 467 | if (block_num) { |
| 468 | for (auto&& opr : all_oprs) { |
| 469 | for (auto i : opr->input) { |
| 470 | auto discard = i->visit_discard_tailing_access(); |
| 471 | if (discard && discard[1].opr == opr && |
| 472 | m_prev_block_discard_vars.count(i)) { |
| 473 | // i is discarded after previous block, but used in this |
| 474 | // block, so do not discard it |
| 475 | i->discard_tailing_access = None; |
| 476 | } |
| 477 | } |
| 478 | } |
| 479 | } |
| 480 | m_prev_block_discard_vars.swap(discard_vars); |
| 481 | } |
| 482 | |
| 483 | /* ==================== ActionSearcherSingleCN ==================== */ |
| 484 | class SeqModifierForSublinearMemory::ActionSearcherSingleCN { |
nothing calls this directly
no test coverage detected