Commit c863f8c2 by David S. Miller Committed by David S. Miller

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
parent da2c31ae
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> 2002-05-23 Jason Thorpe <thorpej@wasabisystems.com>
* c-common.c (warn_nonnull): Declare. * c-common.c (warn_nonnull): Declare.
......
...@@ -720,10 +720,25 @@ approx_reg_cost_1 (xp, data) ...@@ -720,10 +720,25 @@ approx_reg_cost_1 (xp, data)
void *data; void *data;
{ {
rtx x = *xp; rtx x = *xp;
regset set = (regset) data; int *cost_p = data;
if (x && GET_CODE (x) == REG) 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; return 0;
} }
...@@ -736,28 +751,12 @@ static int ...@@ -736,28 +751,12 @@ static int
approx_reg_cost (x) approx_reg_cost (x)
rtx x; rtx x;
{ {
regset_head set;
int i;
int cost = 0; int cost = 0;
int hardregs = 0;
INIT_REG_SET (&set);
for_each_rtx (&x, approx_reg_cost_1, (void *) &set);
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; if (for_each_rtx (&x, approx_reg_cost_1, (void *) &cost))
} return MAX_COST;
});
CLEAR_REG_SET (&set); return cost;
return hardregs && SMALL_REGISTER_CLASSES ? MAX_COST : cost;
} }
/* Return a negative value if an rtx A, whose costs are given by COST_A /* Return a negative value if an rtx A, whose costs are given by COST_A
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment