* pa.c (move_operand): Reject (lo_sum (reg) (unspec ...)).
authorJeffrey A Law <law@cygnus.com>
Sun, 17 Oct 1999 23:08:36 +0000 (23:08 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 17 Oct 1999 23:08:36 +0000 (17:08 -0600)
From-SVN: r30060

gcc/ChangeLog
gcc/config/pa/pa.c

index e4feac5d4fe6b9faa1636dbcb6407ed694b07558..9749bb0ffd5fdb44dce84982aa7dade588e98fb9 100644 (file)
@@ -1,5 +1,7 @@
 Sun Oct 17 15:22:50 1999  Jeffrey A Law  (law@cygnus.com)
 
+       * pa.c (move_operand): Reject (lo_sum (reg) (unspec ...)).
+
        * haifa-sched.c (add_dependence): Only check/update the cache
        if it exists.
        (remove_dependence): Likewise.
index 6af006693ccb0285733282e95a5f1794f52c5424..28fdf9335898412fc4b9bd9cc5fed57d16fb08d3 100644 (file)
@@ -332,6 +332,14 @@ move_operand (op, mode)
 
   op = XEXP (op, 0);
 
+  /* The LO_SUM part of a DLT reference is not considered a move_operand;
+     we must reject it here since it must be accepted by memory_address_p.  */
+  if (GET_CODE (op) == LO_SUM
+      && GET_CODE (XEXP (op, 0)) == REG
+      && REG_OK_FOR_BASE_P (XEXP (op, 0))
+      && GET_CODE (XEXP (op, 1)) == UNSPEC)
+    return 0;
+
   /* Since move_operand is only used for source operands, we can always
      allow scaled indexing!  */
   if (! TARGET_DISABLE_INDEXING