Commit 74e3e54a by Hans-Peter Nilsson Committed by Hans-Peter Nilsson

recog.c (constrain_operands): For a match, require that a non-register matches…

recog.c (constrain_operands): For a match, require that a non-register matches general_operand when strict >= 0.

	* recog.c (constrain_operands) <case 'g'>: For a match, require
	that a non-register matches general_operand when strict >= 0.

From-SVN: r106821
parent 516ebd44
2005-11-12 Hans-Peter Nilsson <hp@axis.com>
* recog.c (constrain_operands) <case 'g'>: For a match, require
that a non-register matches general_operand when strict >= 0.
2005-11-11 Steven Bosscher <stevenb@suse.de>
* loop-invariant.c (move_loop_invariants): Fix a thinko in the
......
......@@ -2429,16 +2429,22 @@ constrain_operands (int strict)
break;
/* No need to check general_operand again;
it was done in insn-recog.c. */
it was done in insn-recog.c. Well, except that reload
doesn't check the validity of its replacements, but
that should only matter when there's a bug. */
case 'g':
/* Anything goes unless it is a REG and really has a hard reg
but the hard reg is not in the class GENERAL_REGS. */
if (strict < 0
|| GENERAL_REGS == ALL_REGS
|| !REG_P (op)
|| (reload_in_progress
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)
|| reg_fits_class_p (op, GENERAL_REGS, offset, mode))
if (REG_P (op))
{
if (strict < 0
|| GENERAL_REGS == ALL_REGS
|| (reload_in_progress
&& REGNO (op) >= FIRST_PSEUDO_REGISTER)
|| reg_fits_class_p (op, GENERAL_REGS, offset, mode))
win = 1;
}
else if (strict < 0 || general_operand (op, mode))
win = 1;
break;
......
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