Commit 9ea88834 by Steven Bosscher Committed by Steven Bosscher

recog.c (constrain_operands): Only look for earlyclobber operand conflicts if an…

recog.c (constrain_operands): Only look for earlyclobber operand conflicts if an '&' constraint was seen.

	* recog.c (constrain_operands): Only look for earlyclobber operand
	conflicts if an '&' constraint was seen.

From-SVN: r94493
parent 75a3bd9d
2005-01-31 Steven Bosscher <stevenb@suse.de>
* recog.c (constrain_operands): Only look for earlyclobber operand
conflicts if an '&' constraint was seen.
2005-01-31 Marc Espie <espie@openbsd.org> 2005-01-31 Marc Espie <espie@openbsd.org>
* config.gcc: Don't include embedded systems fragment, switches default * config.gcc: Don't include embedded systems fragment, switches default
......
...@@ -2233,6 +2233,7 @@ constrain_operands (int strict) ...@@ -2233,6 +2233,7 @@ constrain_operands (int strict)
do do
{ {
int seen_earlyclobber_at = -1;
int opno; int opno;
int lose = 0; int lose = 0;
funny_match_index = 0; funny_match_index = 0;
...@@ -2295,6 +2296,8 @@ constrain_operands (int strict) ...@@ -2295,6 +2296,8 @@ constrain_operands (int strict)
case '&': case '&':
earlyclobber[opno] = 1; earlyclobber[opno] = 1;
if (seen_earlyclobber_at < 0)
seen_earlyclobber_at = opno;
break; break;
case '0': case '1': case '2': case '3': case '4': case '0': case '1': case '2': case '3': case '4':
...@@ -2543,8 +2546,10 @@ constrain_operands (int strict) ...@@ -2543,8 +2546,10 @@ constrain_operands (int strict)
/* See if any earlyclobber operand conflicts with some other /* See if any earlyclobber operand conflicts with some other
operand. */ operand. */
if (strict > 0) if (strict > 0 && seen_earlyclobber_at >= 0)
for (eopno = 0; eopno < recog_data.n_operands; eopno++) for (eopno = seen_earlyclobber_at;
eopno < recog_data.n_operands;
eopno++)
/* Ignore earlyclobber operands now in memory, /* Ignore earlyclobber operands now in memory,
because we would often report failure when we have because we would often report failure when we have
two memory operands, one of which was formerly a REG. */ two memory operands, one of which was formerly a REG. */
......
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