aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2002-01-23 01:56:22 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2002-01-23 01:56:22 +0000
commit38979c658769ad5aa7f3605ce5d85a3852f866d0 (patch)
treea6bf893361c14758351c587804127e90c8a54eba /gcc
parent7458a9f0307e5f2e074209baeb59e60112d86004 (diff)
downloadgcc-38979c658769ad5aa7f3605ce5d85a3852f866d0.zip
gcc-38979c658769ad5aa7f3605ce5d85a3852f866d0.tar.gz
gcc-38979c658769ad5aa7f3605ce5d85a3852f866d0.tar.bz2
reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and auto_inc_dec values.
* reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and auto_inc_dec values. From-SVN: r49118
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 77cd5d9..4974da5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-01-22 Alexandre Oliva <aoliva@redhat.com>
+
+ * reload.c (reg_overlap_mentioned_for_reload_p): Handle PLUS and
+ auto_inc_dec values.
+
2002-01-22 Richard Earnshaw <rearnsha@arm.com>
* config/netbsd-aout.h (SWITCH_TAKES_ARG): Remove bogus white space
diff --git a/gcc/reload.c b/gcc/reload.c
index 8f82c93..9b8cdc9 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6166,7 +6166,8 @@ reg_overlap_mentioned_for_reload_p (x, in)
int regno, endregno;
/* Overly conservative. */
- if (GET_CODE (x) == STRICT_LOW_PART)
+ if (GET_CODE (x) == STRICT_LOW_PART
+ || GET_RTX_CLASS (GET_CODE (x)) == 'a')
x = XEXP (x, 0);
/* If either argument is a constant, then modifying X can not affect IN. */
@@ -6202,6 +6203,9 @@ reg_overlap_mentioned_for_reload_p (x, in)
else if (GET_CODE (x) == SCRATCH || GET_CODE (x) == PC
|| GET_CODE (x) == CC0)
return reg_mentioned_p (x, in);
+ else if (GET_CODE (x) == PLUS)
+ return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in)
+ || reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in));
else
abort ();