Index: gcc/reload1.c |
diff --git a/gcc/reload1.c b/gcc/reload1.c |
index fcf0bd3fc4d3588e290fb12dc69a7d623762e0ef..35ead42de67491414714096ebdd4ae220176edac 100644 |
--- a/gcc/reload1.c |
+++ b/gcc/reload1.c |
@@ -1719,11 +1719,12 @@ count_pseudo (int reg) |
int r = reg_renumber[reg]; |
int nregs; |
+ /* Ignore spilled pseudo-registers which can be here only if IRA is used. */ |
+ if (ira_conflicts_p && r < 0) |
+ return; |
+ |
if (REGNO_REG_SET_P (&pseudos_counted, reg) |
- || REGNO_REG_SET_P (&spilled_pseudos, reg) |
- /* Ignore spilled pseudo-registers which can be here only if IRA |
- is used. */ |
- || (ira_conflicts_p && r < 0)) |
+ || REGNO_REG_SET_P (&spilled_pseudos, reg)) |
return; |
SET_REGNO_REG_SET (&pseudos_counted, reg); |
@@ -1800,12 +1801,17 @@ count_spilled_pseudo (int spilled, int spilled_nregs, int reg) |
{ |
int freq = REG_FREQ (reg); |
int r = reg_renumber[reg]; |
- int nregs = hard_regno_nregs[r][PSEUDO_REGNO_MODE (reg)]; |
+ int nregs; |
+ |
+ /* Ignore spilled pseudo-registers which can be here only if IRA is used. */ |
+ if (ira_conflicts_p && r < 0) |
+ return; |
+ |
+ gcc_assert (r >= 0); |
+ |
+ nregs = hard_regno_nregs[r][PSEUDO_REGNO_MODE (reg)]; |
- /* Ignore spilled pseudo-registers which can be here only if IRA is |
- used. */ |
- if ((ira_conflicts_p && r < 0) |
- || REGNO_REG_SET_P (&spilled_pseudos, reg) |
+ if (REGNO_REG_SET_P (&spilled_pseudos, reg) |
|| spilled + spilled_nregs <= r || r + nregs <= spilled) |
return; |