aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/rtlanal.c30
2 files changed, 30 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5add95c..ed0c3c0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Aug 17 13:20:32 EDT 2000 John Wehle (john@feith.com)
+
+ * rtlanal.c (rtx_unstable_p): Use CONSTANT_P.
+ (rtx_unstable_p, rtx_varies_p): Process vectors.
+
2000-08-16 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>
* config/sh/lib1funcs.asm (GLOBAL): Define. Use for all
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 22e0566..5c69a50 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -58,7 +58,7 @@ rtx_unstable_p (x)
if (code == QUEUED)
return 1;
- if (code == CONST || code == CONST_INT)
+ if (CONSTANT_P (x))
return 0;
if (code == REG)
@@ -70,8 +70,18 @@ rtx_unstable_p (x)
fmt = GET_RTX_FORMAT (code);
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
if (fmt[i] == 'e')
- if (rtx_unstable_p (XEXP (x, i)))
- return 1;
+ {
+ if (rtx_unstable_p (XEXP (x, i)))
+ return 1;
+ }
+ else if (fmt[i] == 'E')
+ {
+ int j;
+ for (j = 0; j < XVECLEN (x, i); j++)
+ if (rtx_unstable_p (XVECEXP (x, i, j)))
+ return 1;
+ }
+
return 0;
}
@@ -121,8 +131,18 @@ rtx_varies_p (x)
fmt = GET_RTX_FORMAT (code);
for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
if (fmt[i] == 'e')
- if (rtx_varies_p (XEXP (x, i)))
- return 1;
+ {
+ if (rtx_varies_p (XEXP (x, i)))
+ return 1;
+ }
+ else if (fmt[i] == 'E')
+ {
+ int j;
+ for (j = 0; j < XVECLEN (x, i); j++)
+ if (rtx_varies_p (XVECEXP (x, i, j)))
+ return 1;
+ }
+
return 0;
}