(find_reg): Store divide results in temporary variables.
From-SVN: r7778
This commit is contained in:
parent
8c4f5c09f0
commit
7a17c5881c
46
gcc/global.c
46
gcc/global.c
|
@ -1096,28 +1096,36 @@ find_reg (allocno, losers, alt_regs_p, accept_call_clobbered, retrying)
|
|||
if (local_reg_n_refs[regno] != 0
|
||||
/* Don't use a reg no good for this pseudo. */
|
||||
&& ! TEST_HARD_REG_BIT (used2, regno)
|
||||
&& HARD_REGNO_MODE_OK (regno, mode)
|
||||
&& (((double) local_reg_n_refs[regno]
|
||||
/ local_reg_live_length[regno])
|
||||
< ((double) allocno_n_refs[allocno]
|
||||
/ allocno_live_length[allocno])))
|
||||
&& HARD_REGNO_MODE_OK (regno, mode))
|
||||
{
|
||||
/* Hard reg REGNO was used less in total by local regs
|
||||
than it would be used by this one allocno! */
|
||||
int k;
|
||||
for (k = 0; k < max_regno; k++)
|
||||
if (reg_renumber[k] >= 0)
|
||||
{
|
||||
int r = reg_renumber[k];
|
||||
int endregno
|
||||
= r + HARD_REGNO_NREGS (r, PSEUDO_REGNO_MODE (k));
|
||||
/* We explicitly evaluate the divide results into temporary
|
||||
variables so as to avoid excess precision problems that occur
|
||||
on a i386-unknown-sysv4.2 (unixware) host. */
|
||||
|
||||
double tmp1 = ((double) local_reg_n_refs[regno]
|
||||
/ local_reg_live_length[regno]);
|
||||
double tmp2 = ((double) allocno_n_refs[allocno]
|
||||
/ allocno_live_length[allocno]);
|
||||
|
||||
if (regno >= r && regno < endregno)
|
||||
reg_renumber[k] = -1;
|
||||
}
|
||||
if (tmp1 < tmp2)
|
||||
{
|
||||
/* Hard reg REGNO was used less in total by local regs
|
||||
than it would be used by this one allocno! */
|
||||
int k;
|
||||
for (k = 0; k < max_regno; k++)
|
||||
if (reg_renumber[k] >= 0)
|
||||
{
|
||||
int r = reg_renumber[k];
|
||||
int endregno
|
||||
= r + HARD_REGNO_NREGS (r, PSEUDO_REGNO_MODE (k));
|
||||
|
||||
best_reg = regno;
|
||||
break;
|
||||
if (regno >= r && regno < endregno)
|
||||
reg_renumber[k] = -1;
|
||||
}
|
||||
|
||||
best_reg = regno;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue