rtlanal.c (reg_overlap_mentioned_p): Don't test CONSTANT_P (x).

2004-02-02  Paolo Bonzini  <bonzini@gnu.org>

	* rtlanal.c (reg_overlap_mentioned_p) [!ENABLE_CHECKING]:
	Don't test CONSTANT_P (x).
	(reg_overlap_mentioned_p): Merge check for STRICT_LOWPART,
	ZERO_EXTRACT, SIGN_EXTRACT with the switch statement.
	Fix misindentation.

From-SVN: r77105
This commit is contained in:
Paolo Bonzini 2004-02-02 10:44:28 +00:00 committed by Paolo Carlini
parent e789e9c470
commit 6f626d1bdf
2 changed files with 27 additions and 12 deletions

View File

@ -1,3 +1,11 @@
2004-02-02 Paolo Bonzini <bonzini@gnu.org>
* rtlanal.c (reg_overlap_mentioned_p) [!ENABLE_CHECKING]:
Don't test CONSTANT_P (x).
(reg_overlap_mentioned_p): Merge check for STRICT_LOWPART,
ZERO_EXTRACT, SIGN_EXTRACT with the switch statement.
Fix misindentation.
2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
* doc/invoke.texi (SPARC options): Document that -mflat is deprecated.

View File

@ -1520,18 +1520,22 @@ reg_overlap_mentioned_p (rtx x, rtx in)
{
unsigned int regno, endregno;
/* Overly conservative. */
if (GET_CODE (x) == STRICT_LOW_PART
|| GET_CODE (x) == ZERO_EXTRACT
|| GET_CODE (x) == SIGN_EXTRACT)
x = XEXP (x, 0);
/* If either argument is a constant, then modifying X can not affect IN. */
if (CONSTANT_P (x) || CONSTANT_P (in))
/* If either argument is a constant, then modifying X can not
affect IN. Here we look at IN, we can profitably combine
CONSTANT_P (x) with the switch statement below. */
if (CONSTANT_P (in))
return 0;
recurse:
switch (GET_CODE (x))
{
case STRICT_LOW_PART:
case ZERO_EXTRACT:
case SIGN_EXTRACT:
/* Overly conservative. */
x = XEXP (x, 0);
goto recurse;
case SUBREG:
regno = REGNO (SUBREG_REG (x));
if (regno < FIRST_PSEUDO_REGISTER)
@ -1574,15 +1578,18 @@ reg_overlap_mentioned_p (rtx x, rtx in)
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
if (XEXP (XVECEXP (x, 0, i), 0) != 0
&& reg_overlap_mentioned_p (XEXP (XVECEXP (x, 0, i), 0), in))
return 1;
return 1;
return 0;
}
default:
break;
}
#ifdef ENABLE_CHECKING
if (!CONSTANT_P (x))
abort ();
#endif
abort ();
return 0;
}
}
/* Return the last value to which REG was set prior to INSN. If we can't