mirror of
https://review.haiku-os.org/buildtools
synced 2025-01-31 10:34:41 +01:00
- fixed problem with "fixed or forbidden register" bx or bp being spilled
for inline assembly that requires a lot of register operands. Now these registers are only spilled if it is safe to do so (if -fno-pic or -fomit-frame-pointer has been given). git-svn-id: file:///srv/svn/repos/haiku/trunk/buildtools@10349 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
d9894d5b5c
commit
f5a979fb14
@ -4155,6 +4155,7 @@ order_regs_for_reload (chain)
|
||||
int regno = reg_alloc_order[i];
|
||||
|
||||
if (hard_reg_n_uses[regno].uses == 0
|
||||
&& !fixed_regs[regno]
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, regno))
|
||||
potential_reload_regs[o++] = regno;
|
||||
}
|
||||
@ -4162,12 +4163,14 @@ order_regs_for_reload (chain)
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
if (hard_reg_n_uses[i].uses == 0 && call_used_regs[i]
|
||||
&& !fixed_regs[i]
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, i))
|
||||
potential_reload_regs[o++] = i;
|
||||
}
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
{
|
||||
if (hard_reg_n_uses[i].uses == 0 && ! call_used_regs[i]
|
||||
&& !fixed_regs[i]
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, i))
|
||||
potential_reload_regs[o++] = i;
|
||||
}
|
||||
@ -4182,10 +4185,13 @@ order_regs_for_reload (chain)
|
||||
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if (hard_reg_n_uses[i].uses != 0
|
||||
&& !fixed_regs[hard_reg_n_uses[i].regno]
|
||||
&& ! TEST_HARD_REG_BIT (bad_spill_regs, hard_reg_n_uses[i].regno))
|
||||
potential_reload_regs[o++] = hard_reg_n_uses[i].regno;
|
||||
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
|
||||
if (TEST_HARD_REG_BIT (bad_spill_regs, hard_reg_n_uses[i].regno))
|
||||
if (TEST_HARD_REG_BIT (bad_spill_regs, hard_reg_n_uses[i].regno)
|
||||
&& !fixed_regs[hard_reg_n_uses[i].regno]
|
||||
)
|
||||
potential_reload_regs[o++] = hard_reg_n_uses[i].regno;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user