aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-10-27 23:07:37 +0000
committerJeff Law <law@gcc.gnu.org>1997-10-27 16:07:37 -0700
commit0cecc1904d81554d7e955ed43709f9c6aff91b20 (patch)
treeb616fe416f6fe8aa95e5d9d1ea195bf437efad28 /gcc
parentc9670e62b999b5175c774224e0db88655103ff6c (diff)
downloadgcc-0cecc1904d81554d7e955ed43709f9c6aff91b20.zip
gcc-0cecc1904d81554d7e955ed43709f9c6aff91b20.tar.gz
gcc-0cecc1904d81554d7e955ed43709f9c6aff91b20.tar.bz2
* mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Disable reg+reg.
From-SVN: r16209
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/mn10300/mn10300.h17
2 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 063f3d8..fd6a576 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Mon Oct 27 16:11:10 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Disable reg+reg.
+
Sun Oct 26 13:50:44 1997 Richard Henderson <rth@cygnus.com>
* alpha.c (alpha_sa_mask [VMS]): Don't include $26 in the mask.
diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h
index 4c32b8d..252a70f 100644
--- a/gcc/config/mn10300/mn10300.h
+++ b/gcc/config/mn10300/mn10300.h
@@ -639,7 +639,18 @@ extern struct rtx_def *mn10300_builtin_saveregs ();
The other macros defined here are used only in GO_IF_LEGITIMATE_ADDRESS,
except for CONSTANT_ADDRESS_P which is actually
- machine-independent. */
+ machine-independent.
+
+ On the mn10300, the value in the address register must be
+ in the same memory space/segment as the effective address.
+
+ This is problematical for reload since it does not understand
+ that base+index != index+base in a memory reference.
+
+ Note it is still possible to use reg+reg addressing modes,
+ it's just much more difficult. For a discussion of a possible
+ workaround and solution, see the comments in pa.c before the
+ function record_unscaled_index_insn_codes. */
/* Accept either REG or SUBREG where a register is valid. */
@@ -667,10 +678,6 @@ extern struct rtx_def *mn10300_builtin_saveregs ();
{ \
if (GET_CODE (index) == CONST_INT) \
goto ADDR; \
- if (REG_P (index) \
- && REG_OK_FOR_INDEX_P (index) \
- && GET_MODE_SIZE (mode) <= GET_MODE_SIZE (word_mode)) \
- goto ADDR; \
} \
} \
}