Commit ecd40809 by Richard Kenner

(can_combine_p): When SMALL_REGISTER_CLASSES is defined, avoid

substituting a return register into I3.

From-SVN: r13006
parent 02214a5c
...@@ -960,11 +960,16 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc) ...@@ -960,11 +960,16 @@ can_combine_p (insn, i3, pred, succ, pdest, psrc)
/* Don't extend the life of a hard register unless it is /* Don't extend the life of a hard register unless it is
user variable (if we have few registers) or it can't user variable (if we have few registers) or it can't
fit into the desired register (meaning something special fit into the desired register (meaning something special
is going on). */ is going on).
Also avoid substituting a return register into I3, because
reload can't handle a conflict with constraints of other
inputs. */
|| (REGNO (src) < FIRST_PSEUDO_REGISTER || (REGNO (src) < FIRST_PSEUDO_REGISTER
&& (! HARD_REGNO_MODE_OK (REGNO (src), GET_MODE (src)) && (! HARD_REGNO_MODE_OK (REGNO (src), GET_MODE (src))
#ifdef SMALL_REGISTER_CLASSES #ifdef SMALL_REGISTER_CLASSES
|| (! all_adjacent && ! REG_USERVAR_P (src)) || (! all_adjacent && ! REG_USERVAR_P (src))
|| (FUNCTION_VALUE_REGNO_P (REGNO (src))
&& ! REG_USERVAR_P (src))
#endif #endif
)))) ))))
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