Commit 63b827c5 by Dale Johannesen Committed by Dale Johannesen

Reenable combination of hard regs unless CLASS_LIKELY_SPILLED_P.

From-SVN: r53531
parent 1020e435
2002-05-16 Dale Johannesen <dalej@apple.com>
* combine.c (cant_combine_insn_p): Reenable combinations
involving hard regs unless CLASS_LIKELY_SPILLED_P.
2002-05-16 Neil Booth <neil@daikokuya.demon.co.uk> 2002-05-16 Neil Booth <neil@daikokuya.demon.co.uk>
* c-common.c (cb_register_builtins): Handle more built-ins * c-common.c (cb_register_builtins): Handle more built-ins
......
...@@ -1459,10 +1459,10 @@ cant_combine_insn_p (insn) ...@@ -1459,10 +1459,10 @@ cant_combine_insn_p (insn)
if (! INSN_P (insn)) if (! INSN_P (insn))
return 1; return 1;
/* Never combine loads and stores involving hard regs. The register /* Never combine loads and stores involving hard regs that are likely
allocator can usually handle such reg-reg moves by tying. If we allow to be spilled. The register allocator can usually handle such
the combiner to make substitutions of hard regs, we risk aborting in reg-reg moves by tying. If we allow the combiner to make
reload on machines that have SMALL_REGISTER_CLASSES. substitutions of likely-spilled regs, we may abort in reload.
As an exception, we allow combinations involving fixed regs; these are As an exception, we allow combinations involving fixed regs; these are
not available to the register allocator so there's no risk involved. */ not available to the register allocator so there's no risk involved. */
...@@ -1477,9 +1477,11 @@ cant_combine_insn_p (insn) ...@@ -1477,9 +1477,11 @@ cant_combine_insn_p (insn)
dest = SUBREG_REG (dest); dest = SUBREG_REG (dest);
if (REG_P (src) && REG_P (dest) if (REG_P (src) && REG_P (dest)
&& ((REGNO (src) < FIRST_PSEUDO_REGISTER && ((REGNO (src) < FIRST_PSEUDO_REGISTER
&& ! fixed_regs[REGNO (src)]) && ! fixed_regs[REGNO (src)]
&& CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (REGNO (src))))
|| (REGNO (dest) < FIRST_PSEUDO_REGISTER || (REGNO (dest) < FIRST_PSEUDO_REGISTER
&& ! fixed_regs[REGNO (dest)]))) && ! fixed_regs[REGNO (dest)]
&& CLASS_LIKELY_SPILLED_P (REGNO_REG_CLASS (REGNO (dest))))))
return 1; return 1;
return 0; return 0;
......
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