Commit b98b49ac by Jeffrey A Law Committed by Jeff Law

rtlanal.c (reg_overlap_mentioned_p): Handle STRICT_LOW_PART.

        * rtlanal.c (reg_overlap_mentioned_p): Handle STRICT_LOW_PART.  If
        either argument is CONSTANT_P, then return zero.
        * reload.c (reg_overlap_mentioned_for_reload_p): Similarly.

From-SVN: r21005
parent 67a00b49
Wed Jul 8 02:43:34 1998 Jeffrey A Law (law@cygnus.com) Wed Jul 8 02:43:34 1998 Jeffrey A Law (law@cygnus.com)
* rtlanal.c (reg_overlap_mentioned_p): Handle STRICT_LOW_PART. If
either argument is CONSTANT_P, then return zero.
* reload.c (reg_overlap_mentioned_for_reload_p): Similarly.
* configure.in: Also look at $srcdir/gas/configure to find a * configure.in: Also look at $srcdir/gas/configure to find a
gas version #. gas version #.
......
...@@ -5822,7 +5822,14 @@ reg_overlap_mentioned_for_reload_p (x, in) ...@@ -5822,7 +5822,14 @@ reg_overlap_mentioned_for_reload_p (x, in)
{ {
int regno, endregno; int regno, endregno;
if (GET_CODE (x) == SUBREG) /* Overly conservative. */
if (GET_CODE (x) == STRICT_LOW_PART)
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;
else if (GET_CODE (x) == SUBREG)
{ {
regno = REGNO (SUBREG_REG (x)); regno = REGNO (SUBREG_REG (x));
if (regno < FIRST_PSEUDO_REGISTER) if (regno < FIRST_PSEUDO_REGISTER)
...@@ -5844,8 +5851,6 @@ reg_overlap_mentioned_for_reload_p (x, in) ...@@ -5844,8 +5851,6 @@ reg_overlap_mentioned_for_reload_p (x, in)
abort (); abort ();
} }
} }
else if (CONSTANT_P (x))
return 0;
else if (GET_CODE (x) == MEM) else if (GET_CODE (x) == MEM)
return refers_to_mem_for_reload_p (in); return refers_to_mem_for_reload_p (in);
else if (GET_CODE (x) == SCRATCH || GET_CODE (x) == PC else if (GET_CODE (x) == SCRATCH || GET_CODE (x) == PC
......
...@@ -817,7 +817,14 @@ reg_overlap_mentioned_p (x, in) ...@@ -817,7 +817,14 @@ reg_overlap_mentioned_p (x, in)
{ {
int regno, endregno; int regno, endregno;
if (GET_CODE (x) == SUBREG) /* Overly conservative. */
if (GET_CODE (x) == STRICT_LOW_PART)
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;
else if (GET_CODE (x) == SUBREG)
{ {
regno = REGNO (SUBREG_REG (x)); regno = REGNO (SUBREG_REG (x));
if (regno < FIRST_PSEUDO_REGISTER) if (regno < FIRST_PSEUDO_REGISTER)
...@@ -825,8 +832,6 @@ reg_overlap_mentioned_p (x, in) ...@@ -825,8 +832,6 @@ reg_overlap_mentioned_p (x, in)
} }
else if (GET_CODE (x) == REG) else if (GET_CODE (x) == REG)
regno = REGNO (x); regno = REGNO (x);
else if (CONSTANT_P (x))
return 0;
else if (GET_CODE (x) == MEM) else if (GET_CODE (x) == MEM)
{ {
char *fmt; char *fmt;
......
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