OSDN Git Service

* config/c4x/c4x.c (c4x_legitimate_address_p): Invalidate direct
authorm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jan 2004 00:40:05 +0000 (00:40 +0000)
committerm.hayes <m.hayes@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 26 Jan 2004 00:40:05 +0000 (00:40 +0000)
memory references if TARGET_EXPOSE_LDP nonzero.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76611 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/c4x/c4x.c

index 6a4dac9..9489221 100644 (file)
@@ -1,5 +1,10 @@
 2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
+       * config/c4x/c4x.c (c4x_legitimate_address_p):  Invalidate direct
+       memory references if TARGET_EXPOSE_LDP nonzero.
+
+2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
        * config/c4x/c4x.c (legitimize_operands): Truncate invalid shift counts.
        
 2004-01-26  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
index db350ce..9a6b888 100644 (file)
@@ -1236,10 +1236,11 @@ c4x_emit_move_sequence (rtx *operands, enum machine_mode mode)
       && dp_reg_operand (XEXP (op1, 0), mode))
     {
       /* expand_increment will sometimes create a LO_SUM immediate
-        address.  */
+        address.  Undo this sillyness.  */
       op1 = XEXP (op1, 1);
     }
-  else if (symbolic_address_operand (op1, mode))
+  
+  if (symbolic_address_operand (op1, mode))
     {
       if (TARGET_LOAD_ADDRESS)
        {
@@ -3267,7 +3268,8 @@ src_operand (rtx op, enum machine_mode mode)
       && ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
           || GET_CODE (XEXP (op, 0)) == LABEL_REF
           || GET_CODE (XEXP (op, 0)) == CONST)))
-    return ! TARGET_LOAD_DIRECT_MEMS && GET_MODE (op) == mode;
+    return !TARGET_EXPOSE_LDP && 
+      ! TARGET_LOAD_DIRECT_MEMS && GET_MODE (op) == mode;
 
   return general_operand (op, mode);
 }