boolean is_game_finished(MonopolyMap map ){ BlockAddress B = map.first; if(( NbElmt(map.ListPlayer) == 1 )|| is_tourism(map) || is_triple(map)) { return true; } else { return false; } }
VN * IR_GVN::register_tri_vn(IR_TYPE irt, VN const* v0, VN const* v1, VN const* v2) { IS_TRUE0(v0 && v1 && v2); IS_TRUE0(is_triple(irt)); VEC3 * v0_vec = (VEC3*)m_irt_vec.get(irt); if (v0_vec == NULL) { v0_vec = new VEC3(); m_vec_lst.append_tail((VEC1*)v0_vec); m_irt_vec.set(irt, (VEC2*)v0_vec); } VEC2 * v1_vec = v0_vec->get(VN_id(v0)); if (v1_vec == NULL) { v1_vec = new VEC2(); m_vec_lst.append_tail((VEC1*)v1_vec); v0_vec->set(VN_id(v0), v1_vec); } VEC1 * v2_vec = v1_vec->get(VN_id(v1)); if (v2_vec == NULL) { v2_vec = new VEC1(); m_vec_lst.append_tail((VEC1*)v2_vec); m_vnvec_lst.append_tail(v2_vec); v1_vec->set(VN_id(v1), v2_vec); } VN * res = v2_vec->get(VN_id(v2)); if (res == NULL) { res = new_vn(); VN_type(res) = VN_OP; VN_op(res) = irt; v2_vec->set(VN_id(v2), res); } return res; }
bool IR_GVN::verify() { for (INT i = 0; i <= m_irt_vec.get_last_idx(); i++) { if (is_bin_irt((IR_TYPE)i) || i == IR_LDA) { SVECTOR<SVECTOR<VN*>*> * v0_vec = m_irt_vec.get(i); if (v0_vec == NULL) { continue; } for (INT j = 0; j <= v0_vec->get_last_idx(); j++) { SVECTOR<VN*> * v1_vec = v0_vec->get(j); if (v1_vec == NULL) { continue; } //v1_vec->clean(); } } else if (i == IR_BNOT || i == IR_LNOT || i == IR_NEG || i == IR_CVT) { SVECTOR<VN*> * v0_vec = (SVECTOR<VN*>*)m_irt_vec.get(i); if (v0_vec == NULL) { continue; } //v0_vec->clean(); } else if (is_triple((IR_TYPE)i)) { VEC3 * v0_vec = (VEC3*)m_irt_vec.get(i); if (v0_vec == NULL) { continue; } for (INT j = 0; j <= v0_vec->get_last_idx(); j++) { VEC2 * v1_vec = v0_vec->get(j); if (v1_vec == NULL) { continue; } for (INT k = 0; k <= v1_vec->get_last_idx(); k++) { VEC1 * v2_vec = v1_vec->get(k); if (v1_vec == NULL) { continue; } //v2_vec->clean(); } } } else if (is_quad((IR_TYPE)i)) { // } else { IS_TRUE0(m_irt_vec.get(i) == NULL); } } return true; }