| 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;
|
|
|
|
|