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:
parent
e789e9c470
commit
6f626d1bdf
|
@ -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>
|
2004-02-02 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||||
|
|
||||||
* doc/invoke.texi (SPARC options): Document that -mflat is deprecated.
|
* doc/invoke.texi (SPARC options): Document that -mflat is deprecated.
|
||||||
|
|
|
@ -1520,18 +1520,22 @@ reg_overlap_mentioned_p (rtx x, rtx in)
|
||||||
{
|
{
|
||||||
unsigned int regno, endregno;
|
unsigned int regno, endregno;
|
||||||
|
|
||||||
/* Overly conservative. */
|
/* If either argument is a constant, then modifying X can not
|
||||||
if (GET_CODE (x) == STRICT_LOW_PART
|
affect IN. Here we look at IN, we can profitably combine
|
||||||
|| GET_CODE (x) == ZERO_EXTRACT
|
CONSTANT_P (x) with the switch statement below. */
|
||||||
|| GET_CODE (x) == SIGN_EXTRACT)
|
if (CONSTANT_P (in))
|
||||||
x = XEXP (x, 0);
|
|
||||||
|
|
||||||
/* If either argument is a constant, then modifying X can not affect IN. */
|
|
||||||
if (CONSTANT_P (x) || CONSTANT_P (in))
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
recurse:
|
||||||
switch (GET_CODE (x))
|
switch (GET_CODE (x))
|
||||||
{
|
{
|
||||||
|
case STRICT_LOW_PART:
|
||||||
|
case ZERO_EXTRACT:
|
||||||
|
case SIGN_EXTRACT:
|
||||||
|
/* Overly conservative. */
|
||||||
|
x = XEXP (x, 0);
|
||||||
|
goto recurse;
|
||||||
|
|
||||||
case SUBREG:
|
case SUBREG:
|
||||||
regno = REGNO (SUBREG_REG (x));
|
regno = REGNO (SUBREG_REG (x));
|
||||||
if (regno < FIRST_PSEUDO_REGISTER)
|
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--)
|
for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
|
||||||
if (XEXP (XVECEXP (x, 0, i), 0) != 0
|
if (XEXP (XVECEXP (x, 0, i), 0) != 0
|
||||||
&& reg_overlap_mentioned_p (XEXP (XVECEXP (x, 0, i), 0), in))
|
&& reg_overlap_mentioned_p (XEXP (XVECEXP (x, 0, i), 0), in))
|
||||||
return 1;
|
return 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
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
|
/* Return the last value to which REG was set prior to INSN. If we can't
|
||||||
|
|
Loading…
Reference in New Issue