aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/rtlanal.c14
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fbd36e1..b504b10 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-07 Richard Henderson <rth@redhat.com>
+
+ PR rtl-opt/21528
+ * rtlanal.c (reg_overlap_mentioned_p) <MEM>: Handle 'E' formats.
+
2005-06-07 Dale Johannesen <dalej@apple.com>
* tree-nested.c (finalize_nesting_tree_1): Disable
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index 0bdcbba..2561e32 100644
--- a/gcc/rtlanal.c
+++ b/gcc/rtlanal.c
@@ -1309,8 +1309,18 @@ reg_overlap_mentioned_p (rtx x, rtx in)
fmt = GET_RTX_FORMAT (GET_CODE (in));
for (i = GET_RTX_LENGTH (GET_CODE (in)) - 1; i >= 0; i--)
- if (fmt[i] == 'e' && reg_overlap_mentioned_p (x, XEXP (in, i)))
- return 1;
+ if (fmt[i] == 'e')
+ {
+ if (reg_overlap_mentioned_p (x, XEXP (in, i)))
+ return 1;
+ }
+ else if (fmt[i] == 'E')
+ {
+ int j;
+ for (j = XVECLEN (in, i) - 1; j >= 0; --j)
+ if (reg_overlap_mentioned_p (x, XVECEXP (in, i, j)))
+ return 1;
+ }
return 0;
}