Commit eb4d554e by Geoffrey Keating Committed by Geoffrey Keating

reload1.c (choose_reload_regs): Don't inherit a reload that crosses multiple registers if...

	* reload1.c (choose_reload_regs): Don't inherit a reload
	that crosses multiple registers if registers past the first
	don't fit in the desired class.

From-SVN: r44160
parent 8d3216f8
2001-07-19 Geoffrey Keating <geoffk@redhat.com>
* reload1.c (choose_reload_regs): Don't inherit a reload
that crosses multiple registers if registers past the first
don't fit in the desired class.
* ifcvt.c (noce_try_store_flag_constants): Use trunc_int_for_mode
when negating constants.
......
......@@ -5508,10 +5508,16 @@ choose_reload_regs (chain)
if (k == nr)
{
int i1;
int bad_for_class;
last_reg = (GET_MODE (last_reg) == mode
? last_reg : gen_rtx_REG (mode, i));
bad_for_class = 0;
for (k = 0; k < nr; k++)
bad_for_class |= ! TEST_HARD_REG_BIT (reg_class_contents[(int) rld[r].class],
i+k);
/* We found a register that contains the
value we need. If this register is the
same as an `earlyclobber' operand of the
......@@ -5541,8 +5547,7 @@ choose_reload_regs (chain)
if we need it wider than we've got it. */
|| (GET_MODE_SIZE (rld[r].mode)
> GET_MODE_SIZE (mode))
|| ! TEST_HARD_REG_BIT (reg_class_contents[(int) rld[r].class],
i)
|| bad_for_class
/* If find_reloads chose reload_out as reload
register, stay with it - that leaves the
......
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