/* Mark pseudo REGNO as not living at program point POINT and update START_DYING. This finishes the current live range for the pseudo corresponding to REGNO. */ static void mark_pseudo_dead (int regno, int point) { lra_live_range_t p; lra_assert (regno >= FIRST_PSEUDO_REGISTER); lra_assert (sparseset_bit_p (pseudos_live, regno)); sparseset_clear_bit (pseudos_live, regno); sparseset_set_bit (start_dying, regno); if (complete_info_p || lra_get_regno_hard_regno (regno) < 0) { p = lra_reg_info[regno].live_ranges; lra_assert (p != NULL); p->finish = point; } }
void sparseset_and (sparseset d, sparseset a, sparseset b) { SPARSESET_ELT_TYPE e; if (a == b) { if (d != a) sparseset_copy (d, a); return; } if (d == a || d == b) { sparseset s = (d == a) ? b : a; EXECUTE_IF_SET_IN_SPARSESET (d, e) if (!sparseset_bit_p (s, e)) sparseset_clear_bit (d, e); }