bool visit_deletename(BST_DeleteName* node) override { if (node->vreg < 0 || node->vreg >= analysis->cfg->getVRegInfo().getNumOfUserVisibleVRegs()) return true; _doLoad(node->vreg); _doStore(node->vreg); return true; }
bool visit_vreg(int* vreg, bool is_dst) override { if (*vreg >= 0) { if (is_dst) _doStore(*vreg); else _doLoad(*vreg); } return true; }
bool visit_name(AST_Name* node) { if (node->ctx_type == AST_TYPE::Load) _doLoad(node->id); else if (node->ctx_type == AST_TYPE::Store) _doStore(node->id); else { assert(0); abort(); } return true; }
bool visit_name(AST_Name* node) { if (node->ctx_type == AST_TYPE::Load) _doLoad(node->id, node); else if (node->ctx_type == AST_TYPE::Store || node->ctx_type == AST_TYPE::Del || node->ctx_type == AST_TYPE::Param) _doStore(node->id); else { ASSERT(0, "%d", node->ctx_type); abort(); } return true; }