OSDN Git Service

* mn10300.h (GO_IF_LEGITIMATE_ADDRESS): Disable reg+reg.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Oct 1997 23:07:37 +0000 (23:07 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 27 Oct 1997 23:07:37 +0000 (23:07 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@16209 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mn10300/mn10300.h

index 063f3d8..fd6a576 100644 (file)
@@ -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.
index 4c32b8d..252a70f 100644 (file)
@@ -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;                                  \
        }                                               \
     }                                                  \
 }