cse.c (approx_reg_cost_1, [...]): Recode to not use regsets.

2002-05-23  David S. Miller  <davem@redhat.com>

	* cse.c (approx_reg_cost_1, approx_reg_cost): Recode to not use
	regsets.

From-SVN: r53793
This commit is contained in:
David S. Miller 2002-05-23 09:37:58 -07:00 committed by David S. Miller
parent da2c31aee9
commit c863f8c2fa
2 changed files with 25 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2002-05-23 David S. Miller <davem@redhat.com>
* cse.c (approx_reg_cost_1, approx_reg_cost): Recode to not use
regsets.
2002-05-23 Jason Thorpe <thorpej@wasabisystems.com>
* c-common.c (warn_nonnull): Declare.

View File

@ -720,10 +720,25 @@ approx_reg_cost_1 (xp, data)
void *data;
{
rtx x = *xp;
regset set = (regset) data;
int *cost_p = data;
if (x && GET_CODE (x) == REG)
SET_REGNO_REG_SET (set, REGNO (x));
{
unsigned int regno = REGNO (x);
if (! CHEAP_REGNO (regno))
{
if (regno < FIRST_PSEUDO_REGISTER)
{
if (SMALL_REGISTER_CLASSES)
return 1;
*cost_p += 2;
}
else
*cost_p += 1;
}
}
return 0;
}
@ -736,28 +751,12 @@ static int
approx_reg_cost (x)
rtx x;
{
regset_head set;
int i;
int cost = 0;
int hardregs = 0;
INIT_REG_SET (&set);
for_each_rtx (&x, approx_reg_cost_1, (void *) &set);
if (for_each_rtx (&x, approx_reg_cost_1, (void *) &cost))
return MAX_COST;
EXECUTE_IF_SET_IN_REG_SET
(&set, 0, i,
{
if (! CHEAP_REGNO (i))
{
if (i < FIRST_PSEUDO_REGISTER)
hardregs++;
cost += i < FIRST_PSEUDO_REGISTER ? 2 : 1;
}
});
CLEAR_REG_SET (&set);
return hardregs && SMALL_REGISTER_CLASSES ? MAX_COST : cost;
return cost;
}
/* Return a negative value if an rtx A, whose costs are given by COST_A